我正在尝试实现与CMake中的set()
函数相同的行为,但是使用了目标。假设我有一个主CMakeList和两个子文件夹,每个都有一个CMakeList。
Foo CMakeLists.txt :
cmake_minimum_required(VERSION 3.8)
add_subdirectory(Bar)
add_subdirectory(Tox)
add_library(foo STATIC main.cpp)
#command to set UseFeatureA=ON
target_link_libraries(foo PUBLIC bar )
target_link_libraries(foo PUBLIC tox)
Bar CMakeLists.txt:
add_library(bar PUBLIC bar.cpp)
if(UseFeatureA) #This has to be true
target_sources(bar PRIVATE coolFeatureA.cpp)
endif()
Tox CMakeLists.txt:
add_library(tox STATIC tox.cpp)
if(UseFeatureA) #This has to be FALSE
target_sources(bar PRIVATE coolFeatureA.cpp)
endif()
我在target_compile_definition()
中尝试过Foo
,但是我不知道如何在Bar
中检索var。
我在做什么错了?