Получить CMake для выполнения цели в проекте перед сборкой библиотеки - PullRequest
11 голосов
/ 22 марта 2011

Я использую CMake для сборки своего проекта C ++, и он имеет несколько исполняемых файлов и библиотеку (все части одного и того же проекта).Все работает нормально, однако один из моих исполняемых файлов - это генератор кода, который создает некоторые из библиотечных классов.У меня работает все поколение, но я не могу понять, как вызвать этот исполняемый файл (codegen) непосредственно перед сборкой библиотеки.Я нахожусь в среде Linux.Надеюсь, что кто-то может ответить на это.

1 Ответ

17 голосов
/ 22 марта 2011

В CMakeLists.txt:

Сначала определите свой исполняемый файл:

add_executable(marks-code-generator gen.cpp)

Затем определите пользовательскую команду для генерации источника:

add_custom_command(OUTPUT generated.cpp generated.hpp
                   COMMAND marks-code-generator ARGS args here maybe
                   MAIN_DEPENDENCY input-file.in
                   DEPENDS marks-code-generator
                   COMMENT here we go!
                   VERBATIM)

опция VERBATIM обеспечивает правильное экранирование для конкретной платформы.COMMENT будет распечатан при выполнении make, давая что-то вроде [ 66%] here we go!.

Наконец, назовите ваш сгенерированный источник в списке источников для вашей реальной программы:

add_executable(some-program generated.cpp generated.hpp non-generated.cpp foo.cpp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...