使用 cmake 将列表中定义的变量添加到 add_compile_definitions()
Add variables defined in a list to add_compile_definitions() using cmake
我有一个在 cmake 中定义的变量列表,它是使用来自 main CMakeLists.txt:
add_custom_target(gen_a
COMMAND ${CMAKE_COMMAND} -P "gen_sigs.cmake"
)
add_dependencies(${PROJECT_NAME} gen_a)
我的gen_sigs.cmake:
set(SIG_LIST SIGNAL_A=0 SIGNAL_B=1 SIGNAL_C=0 )
我想使用此列表将预处理器定义添加到编译器命令行,如(在 main CMakeLists.txt 中):
add_compile_definitions(
SIGNAL_A=0
SIGNAL_B=1
SIGNAL_C=0
)
我尝试使用以下但它不起作用(在主要 CMakeLists.txt):
add_compile_definitions(
${SIG_LIST}
)
我是 cmake 的新手,所以有关如何完成这项工作的任何建议都会有所帮助。此外, add_custom_target 是在 add_compile_definitions() 之前定义的,但仍然无济于事。我的猜测是执行顺序有问题,因为当我在 cmakelists.txt 中打印 ${SIG_LIST} 时,它没有任何价值。有没有办法向 add_compile_definitions 添加依赖项,以便我的 add_custom_target 命令在 add_compiler_definitions()?
之前被强制执行
你的问题不是很清楚,但根据你所展示的内容,以下应该可行:
include("${CMAKE_CURRENT_SOURCE_DIR}/gen_sigs.cmake")
target_compile_definitions(main_target PRIVATE ${SIG_LIST})
添加自定义目标将处理推迟到构建时间,但您(似乎)想要做的基本上是 configure/generation 时间的事情。 include()
将导致外部脚本立即在与调用相同的范围内执行。
我有一个在 cmake 中定义的变量列表,它是使用来自 main CMakeLists.txt:
add_custom_target(gen_a
COMMAND ${CMAKE_COMMAND} -P "gen_sigs.cmake"
)
add_dependencies(${PROJECT_NAME} gen_a)
我的gen_sigs.cmake:
set(SIG_LIST SIGNAL_A=0 SIGNAL_B=1 SIGNAL_C=0 )
我想使用此列表将预处理器定义添加到编译器命令行,如(在 main CMakeLists.txt 中):
add_compile_definitions(
SIGNAL_A=0
SIGNAL_B=1
SIGNAL_C=0
)
我尝试使用以下但它不起作用(在主要 CMakeLists.txt):
add_compile_definitions(
${SIG_LIST}
)
我是 cmake 的新手,所以有关如何完成这项工作的任何建议都会有所帮助。此外, add_custom_target 是在 add_compile_definitions() 之前定义的,但仍然无济于事。我的猜测是执行顺序有问题,因为当我在 cmakelists.txt 中打印 ${SIG_LIST} 时,它没有任何价值。有没有办法向 add_compile_definitions 添加依赖项,以便我的 add_custom_target 命令在 add_compiler_definitions()?
之前被强制执行你的问题不是很清楚,但根据你所展示的内容,以下应该可行:
include("${CMAKE_CURRENT_SOURCE_DIR}/gen_sigs.cmake")
target_compile_definitions(main_target PRIVATE ${SIG_LIST})
添加自定义目标将处理推迟到构建时间,但您(似乎)想要做的基本上是 configure/generation 时间的事情。 include()
将导致外部脚本立即在与调用相同的范围内执行。