【发布时间】:2013-01-06 06:44:26
【问题描述】:
我对 cmake 有疑问。比如说,我有一个 CMakeLists1,它有一个 CMakeLists2 所在的子目录。
在 CMakeLists2 中,我的目标是一个静态库。我想将它链接到外部库。 我已经做到了:
link_directories ("path_to_library")
add_library (project2 ${sources})
target_link_libraries (project2 "name_of_external_lib")
然后,我想在我的 project1 中使用这个 project2 中的一个类。我是这样做的:
add_executable (project1 ${sources})
target_link_libraries (project1 project2)
但这根本行不通。首先,project2 没有链接到外部库。只是为了检查,我通过vs10项目属性添加了这个库,并且大小不同。第二件事,不知何故 project1 看到了那个外部库(它在这个项目的库依赖项中),当然找不到它。
有什么问题?
【问题讨论】:
-
这看起来像 *.com/questions/14199708/… 的副本,请检查我的答案。
-
嗯,这实际上有点类似于我的问题。但是如果一个库是外部的并且不是目标,我该如何使用这个命令呢?
-
“name_of_external_lib”是共享库还是静态库?
-
@Ov3r1oad 您只需用库的名称替换
$<TARGET_FILE:lib2>位。理想情况下,您使用find_library来定位库并将名称存储在变量中。该变量将代替第二个$<TARGET_FILE:x>事物。
标签: cmake