是否可以在 cmake 中更改库链接顺序
Is it possible to change library linking order in cmake
当我执行make
时,它会执行类似gcc blah.o -lXtst -lX11
的东西,这会导致类似undefined reference to XTestFakeButtonEvent
的错误。我发现了很多答案,他们都说这是因为链接顺序错误。使用普通gcc
时很容易更改顺序,但是make
呢?
这里有两个答案,一个懒惰的答案和一个正确的答案。
惰性是,指定要target_link_libraries
依赖项的顺序是它们在命令行上出现的顺序。
然而,这不是一个非常令人满意的答案,因为以这种方式跟踪依赖项相当乏味,并且很容易出现维护错误。
更好的解决方案是显式建模所有依赖项。也就是说,将每个依赖项建模为其自己的目标(如果处理预编译的依赖项,则可能使用导入的目标),然后使用 target_link_libraries
或 add_dependencies
正确建模目标间依赖项。如果您在整个项目中都这样做,您将(几乎)不必担心订单,因为 CMake 会为您处理它。
解决方案是将XTestFakeButtonEvent作为target_link_libraries添加到库(模块)CMakeLists中.txt 未定义的引用正在发生。 然后 CMAKE 最终会理解依赖要求。
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- libavdevice 和 x11 的静态链接库应该以什么顺序链接?
- 链接库时的默认目录上的GCC或G 路径搜索顺序
- 编写链接函数的更短/更有效的方法,该函数按字典顺序添加新元素
- 双链表中按字母顺序排序的链接
- 为什么更改链接顺序可以修复一个系统上的一些链接错误?
- 链接列表并按字母顺序插入字符串
- 队列顺序中的链接列表
- AC_LANG_PROGRAM由于链接器选项的顺序失败了链接阶段
- 如何确定最快的链接顺序
- 通过Microsoft Visual Studio 2010 IDE 进行精确的库链接顺序控制
- 没有调用C++析构函数,具体取决于链接顺序
- 不同库中的相同符号和链接顺序
- 库的链接顺序问题
- 如何在忽略链接顺序的情况下链接源
- 为什么使用内联函数的程序根据链接顺序和参数具有不同的行为
- 绕过 gcc 中的静态链接顺序问题
- 在Qt Android项目中使用OpenCV时的链接顺序
- 是否可以在 cmake 中更改库链接顺序
- avcodec_alloc_context引用未定义,但ffmpeg链接顺序正确