Как создать заголовок в исходном коде с помощью cmake?
В моем проекте у меня есть файл схемы и утилита, которую я написал для создания файла заголовка. Я использую cmake и сборку из исходного кода для сборки приложения.
В настоящее время я должен восстановить файл заголовка вручную, а затем собрать приложение.
Затем я придумал эти операторы CMakeLists.txt, но они генерируют заголовок в каталоге сборки, а не в каталоге исходного кода.
configure_file( generator.pl generator COPYONLY )
configure_file( schema.txt.in schema.txt COPYONLY )
add_custom_command(
OUTPUT generated.h
COMMAND ./generator schema.txt generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
Можно ли сгенерировать заголовок в исходном каталоге?
изменить (чтобы отразить ответ):
Получить доступ к файлу можно напрямую, указав полный путь к нему:
${CMAKE_CURRENT_SOURCE_DIR}
или же:
${CMAKE_CURRENT_BINARY_DIR}
Итак, чтобы сгенерировать заголовок в моем исходном каталоге, предыдущая выдержка из CMakeLists.txt становится:
add_custom_command(
OUTPUT generated.h
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generator.pl ${CMAKE_CURRENT_SOURCE_DIR}/schema.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
что на самом деле проще. Спасибо
--to
1 ответ
Я думаю, что сгенерированный заголовок хорошо размещен в двоичном каталоге, так как вы можете захотеть создать каталоги с одним и тем же исходным кодом и разными конфигурациями, что приведет к другому сгенерированному заголовку.
Возможно, вы захотите включить каталог сборки в ваш проект:
include_directories(${CMAKE_CURRENT_BINARY_DIR})