Как создать заголовок в исходном коде с помощью 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})
Другие вопросы по тегам