我在其中一个CMakeCache.txt中遇到了以下语句。
SomelibraryName_LIB_DEPENDS:STATIC=general;gcc_s;general;pthread;general;rt;general;/usr/lib/x86_64-linux-gnu/libunwind.so;general;dl;general;uuid;general;
为什么这里需要将军?即使这里没有提到, SomelibraryName 也依赖于其他库,例如 libc,libstdc ++ 和 libm 。一般是指这些额外的库吗?
答案 0 :(得分:0)
免责声明:我对CMake内部知识一无所知。
我的有根据的猜测是,它与target_link_libraries(<target> ... <item>...)
文档中的“常规”相同:
一个调试,优化或常规关键字,紧随其后的是另一个
<item>
。关键字之后的项目将仅用于相应的构建配置。 debug 关键字对应于Debug配置(...)。 优化关键字与所有其他配置相对应。 常规关键字对应于所有配置,并且完全是可选的。
即“常规”是跟随它的库的属性,而不是一些构建工件。
在下面的示例中,根据构建类型,将链接不同版本的some_lib
,但是无论构建类型如何,都将链接相同版本的another_lib1
和another_lib2
。
target_link_libraries(my_target
debug some_lib_DEBUG_VER
optimized some_lib
general another_lib1
another_lib2
)