У меня есть выражение GLOB, например:
file( GLOB HEADER_FILES path/*.h )
И хотел бы создать файл заголовка, который содержит определение для каждой записи HEADER_FILES. Например, если файл называется «путь / my_class.h», то макрос должен быть:
#define PATH_MY_CLASS_FILE /full/path/to/path/my_class.h
Это легко сделать с помощью bash, но мы также ориентируемся на windows и visual studio. Есть ли чистый CMAKE способ сделать это? Или мне придется написать быструю программу на C ++ и создать собственную зависимость / цель для создания файла?
Исходя из ответа, я придумал следующее:
file(WRITE headers.h "//Generated headers include\n")
foreach(header_path ${APP_SHARED_MOC_HEADERS})
# drop full name for macro name
string(REPLACE "${INCLUDE_DIR}/" "" header "${header_path}")
# drop extension
string(REPLACE ".h" "" header "${header}")
string(REPLACE "/" "_" header "${header}")
string(TOUPPER "${header}" define_name)
file(APPEND headers.h "#define PATH_${define_name} ${header_path}\n")
endforeach()