LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Я придумал вот такую штуку (я передаю аргументы препроцессора своему скрипту через --cpp-arg=XXX):

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)
	list(TRANSFORM TMP PREPEND --cpp-arg=)
	list(APPEND CUR_CONFIG_BUILD_FLAGS $<$<CONFIG:${BUILD_TYPE}>:${TMP}>)
endforeach()

add_custom_command(
		OUTPUT ...
		COMMAND "${Python3_EXECUTABLE}" "..."
		--cpp-path="${CMAKE_C_COMPILER}"
		--cpp-arg=-E
		${CUR_CONFIG_BUILD_FLAGS}
		...
)

Но она не работает, если аргумента больше одного:

ninja: error: build.ninja:188: bad $-escape (literal $ must be written as $$)

Исходная версия KivApple, :

Я придумал вот такую штуку (я передаю аргументы препроцессора своему скрипту через --cpp-arg=XXX):

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)
	list(TRANSFORM TMP PREPEND --cpp-arg=)
	list(APPEND CUR_CONFIG_BUILD_FLAGS $<$<CONFIG:${BUILD_TYPE}>:${TMP}>)
endforeach()

add_custom_command(
		OUTPUT ...
		COMMAND "${Python3_EXECUTABLE}" "..."
		--cpp-path="${CMAKE_C_COMPILER}"
		--cpp-arg=-E
		${CUR_CONFIG_BUILD_FLAGS}
		...
)

Но она не работает, если аргумента больше одного:

ninja: error: build.ninja:188: bad $-escape (literal $ must be written as $$)