【发布时间】:2013-01-27 04:24:17
【问题描述】:
我正在使用 CMake 2.8 来构建基于 MQX OS 的应用程序(使用 CodeWarrior)。
CMake 项目基本上构建了一组静态库(比如说 LIB1 和 LIB2)。
然后我在最终的可执行 cmake 规则中引用这些库:
target_add_executable(X ${some_sources})
target_link_libraries(X LIB1 LIB2)
我的问题是一些符号在多个库中定义。
因此,像这样的链接命令:
mwldarm <args> -o <output> <objects> /path/to1/libLIB1.a /path/to2/libLIB2.a
会导致多重定义符号错误。 相反,我希望 CMake 生成如下链接命令:
mwldarm <args> -o <output> <objects> -L/path/to1 -L/path/to2 -lLIB -lLIB2
问题:如何从CMAKE中获取以下变量?
- 库目录标志(例如:
-L/path/to1 -L/path/to2) - 库链接标志(例如:
-lLIB -lLIB2)
我已经阅读了有关 RPATH 的内容,但它似乎只涉及共享库。我对吗?
感谢您的提前。
我很感激。
【问题讨论】:
-
尽管存在链接线问题,但拥有多个符号似乎并不是一件好事。您是否考虑过将 LIB1 和 LIB2 的公共部分重构为一个唯一的库,该库是两者的依赖项?
-
这绝对是我的想法!我奖励你的答案,因为根据我的说法,它是正确的(我 méandres
标签: cmake static-libraries static-linking