相关疑难解决方法(0)

target_link_libraries和add_dependencies

是否有任何用例

target_link_libraries(my-lib x y z)

add_dependencies(my-lib x) # this is not just a waste of bytes?
Run Code Online (Sandbox Code Playgroud)

如果是这样,有人可以解释它会是什么吗?

cmake

16
推荐指数
2
解决办法
1万
查看次数

Cmake:将子项目目标导出到主项目

我目前有一个名为LIBS的项目,其结构如下:

??? Lib1
?   ??? CMakeLists.txt
?   ??? lib1-class.cpp
?   ??? lib1-class.h
??? lib2
?   ??? CMakeLists.txt
?   ??? lib2-class.cpp
?   ??? lib2-class.h
??? cmake
?   ??? LIBSConfig.cmake.in
??? CMakeLists.txt                                                           
Run Code Online (Sandbox Code Playgroud)

在主cmake文件中,我有:

install(
        TARGETS
        lib1
        lib2
        DESTINATION
        ${PROJECT_DIRNAME_lib}
        EXPORT
        ${PROJECT_NAME}Exports
)

install(
        EXPORT
        ${PROJECT_NAME}Exports
        DESTINATION
        ${PROJECT_DIRNAME_lib}
)
Run Code Online (Sandbox Code Playgroud)

因为我想将它们导出到find_package()可以发现的包中.

我的问题是我生成lib1lib2在各自的目录中安装它们时,Cmake告诉我

Error:install TARGETS given target "lib1" which does not exist in this directory.
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的,我的理解是我应该Export()在lib1和lib2中使用以下形式的东西:

export(TARGETS lib1 FILE lib1Exports.cmake)
Run Code Online (Sandbox Code Playgroud)

LIBS项目中,有这样的事情:

ADD_LIBRARY(lib1 UNKNOWN …
Run Code Online (Sandbox Code Playgroud)

c++ cmake relocation

6
推荐指数
1
解决办法
3665
查看次数

标签 统计

cmake ×2

c++ ×1

relocation ×1