【发布时间】:2021-06-22 00:20:44
【问题描述】:
我是 CMake 的新手,我想知道是否有可能根据变量从 target_sources() 中排除某些来源。
假设我在下面有这个
target_sources(myTarget
PUBLIC
PRIVATE
myDir1/src/a.c
myDir2/src/b.c
myDir3/src/c.c
INTERFACE
)
target_include_directories(myTarget
PUBLIC
PRIVATE
myDir1/inc
myDir2/inc
myDir3/inc
INTERFACE
)
我想根据名为 myFlag 的标志从 myDir3 中排除/包含源/目录。我怎样才能做到这一点?
target_sources(myTarget
PUBLIC
PRIVATE
myDir1/src/a.c
myDir2/src/b.c
if(DEFINED myFlag)
myDir3/src/c.c
endif()
INTERFACE
)
target_include_directories(myTarget
PUBLIC
PRIVATE
myDir1/inc
myDir2/inc
if(DEFINED myFlag)
myDir3/inc
endif()
INTERFACE
)
【问题讨论】:
-
sooo
if(DEFINED myFlag) target_sources(myTarget myDir3/src/c.c) endif()?将同一目录添加到PUBLIC和PRIVATE没有意义... -
@KamilCuk 然后我将从公众中删除...
-
这里你肯定不想要
if(DEFINED myFlag)...如果myFlag设置为OFF怎么办? -
如果没有添加任何内容,包括
PUBLIC或INTERFACE是没有意义的
标签: cmake cmake-language cmakelists-options