История изменений
Исправление KivApple, (текущая версия) :
Вот такой вариант заработал.
get_property(DIR_DEFS DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY COMPILE_DEFINITIONS)
separate_arguments(DIR_DEFS)
get_property(TARGET_DEFS TARGET MyProgram PROPERTY COMPILE_DEFINITIONS)
separate_arguments(TARGET_DEFS)
foreach(FLAG ${DIR_DEFS} ${TARGET_DEFS})
list(APPEND CUR_CONFIG_BUILD_FLAGS --cpp-arg=-D${FLAG})
endforeach()
foreach(BUILD_TYPE ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${BUILD_TYPE}" BUILD_TYPE)
set(TMP ${CMAKE_C_FLAGS_${BUILD_TYPE}})
separate_arguments(TMP)
foreach(FLAG ${TMP})
list(APPEND CUR_CONFIG_BUILD_FLAGS $<$<CONFIG:${BUILD_TYPE}>:--cpp-arg=${FLAG}>)
endforeach()
endforeach()
add_custom_command(
OUTPUT ...
COMMAND "${Python3_EXECUTABLE}" "..."
--cpp-path="${CMAKE_C_COMPILER}"
--cpp-arg=-E
${CUR_CONFIG_BUILD_FLAGS}
...
)
Только удручает его громздкость. Интересно, можно ли его как-то оптимизировать или это неизбежность с CMake.
Исходная версия KivApple, :
Вот такой вариант заработал.
get_property(DIR_DEFS DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY COMPILE_DEFINITIONS)
separate_arguments(DIR_DEFS)
get_property(TARGET_DEFS TARGET "${CMAKE_PROJECT_NAME}" PROPERTY COMPILE_DEFINITIONS)
separate_arguments(TARGET_DEFS)
foreach(FLAG ${DIR_DEFS} ${TARGET_DEFS})
list(APPEND CUR_CONFIG_BUILD_FLAGS --cpp-arg=-D${FLAG})
endforeach()
foreach(BUILD_TYPE ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${BUILD_TYPE}" BUILD_TYPE)
set(TMP ${CMAKE_C_FLAGS_${BUILD_TYPE}})
separate_arguments(TMP)
foreach(FLAG ${TMP})
list(APPEND CUR_CONFIG_BUILD_FLAGS $<$<CONFIG:${BUILD_TYPE}>:--cpp-arg=${FLAG}>)
endforeach()
endforeach()
add_custom_command(
OUTPUT ...
COMMAND "${Python3_EXECUTABLE}" "..."
--cpp-path="${CMAKE_C_COMPILER}"
--cpp-arg=-E
${CUR_CONFIG_BUILD_FLAGS}
...
)
Только удручает его громздкость. Интересно, можно ли его как-то оптимизировать или это неизбежность с CMake.