maq*_*qui 7 cmake static-libraries static-linking
我正在使用CMake 2.8来构建基于MQX OS的应用程序(使用CodeWarrior).
CMake项目基本上构建了一组静态库(比如说LIB1和LIB2).
然后我在最终的可执行cmake规则中引用这些库:
target_add_executable(X ${some_sources})
target_link_libraries(X LIB1 LIB2)
Run Code Online (Sandbox Code Playgroud)
我的问题是一些符号在一个库中被定义.
因此,链接命令如:
mwldarm <args> -o <output> <objects> /path/to1/libLIB1.a /path/to2/libLIB2.a
Run Code Online (Sandbox Code Playgroud)
会导致符号错误的多重定义.相反,我希望CMake生成一个链接命令,如:
mwldarm <args> -o <output> <objects> -L/path/to1 -L/path/to2 -lLIB -lLIB2
Run Code Online (Sandbox Code Playgroud)
问题:如何从CMAKE获取以下变量?
-L/path/to1 -L/path/to2)-lLIB -lLIB2)我已经阅读了有关RPATH的内容,但它似乎只涉及共享库.我对吗?
谢谢你提前.
我很感激
看来策略CMP0003可能正是您所需要的。
要使用它,请在您的开头附近添加以下行CMakeLists.txt:
CMAKE_POLICY( SET CMP0003 OLD )
Run Code Online (Sandbox Code Playgroud)
另一种可能性是直接设置依赖项和搜索路径,但这不是最干净的方法。假设您的库被称为liba.a和libb.a,那么:
LINK_DIRECTORIES( ${paths_to_search_for} )
TARGET_ADD_EXECUTABLE(X ${some_sources} )
ADD_DEPENDENCIES(X LIB1 LIB2)
TARGET_LINK_LIBRARIES(X a b )
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下a和b不是 cmake 目标,因此需要一些机制来正确设置依赖项。
| 归档时间: |
|
| 查看次数: |
9529 次 |
| 最近记录: |