CMake对象库目标使用语法
说明(其他)目标可以使用CMake对象库目标使用语法,cmake,Cmake,说明(其他)目标可以使用$语法引用对象库(其中objlib是对象库的名称): add_library要求您列出链接器构建库所需的文件。因为您使用的是对象库,所以没有可供foo参考的最终对象,只有一组对象 想象一个稍微复杂一点的场景: add_library(foo OBJECT fooA.cpp fooB.cpp ) add_library(bar SHARED barA.cpp barB.cpp ) add_library(spaz SHARED foo bar
$
语法引用对象库(其中objlib
是对象库的名称):
add_library
要求您列出链接器构建库所需的文件。因为您使用的是对象库,所以没有可供foo
参考的最终对象,只有一组对象
想象一个稍微复杂一点的场景:
add_library(foo OBJECT
fooA.cpp
fooB.cpp
)
add_library(bar SHARED
barA.cpp
barB.cpp
)
add_library(spaz SHARED
foo
bar
)
对于spaz
指令,bar
指单个条。因此,
(或DLL或任何东西)由相应的add_库链接,但是foo
指的是什么?有两个文件,fooA.o
和fooB.o
,因此cmake需要使用生成器表达式来收集这些文件
我不确定是否有技术原因导致cmake无法支持对象库的速记,但当前的解决方案利用了现有的生成器表达式
add_library(foo OBJECT
foo.cpp
)
add_library(bar SHARED
bar.cpp
foo
)
add_library(foo OBJECT
fooA.cpp
fooB.cpp
)
add_library(bar SHARED
barA.cpp
barB.cpp
)
add_library(spaz SHARED
foo
bar
)