Visual Studio 2010 — используйте CMake для запуска программы C ++ после сборки

У меня есть приложение, написанное на C ++, которое я использую CMake для сборки и выпуска двоичных файлов.

Я хотел бы, чтобы скрипт CMakeLists.txt компилировался и запускал файл CPP, который используется для отметки времени и шифрования файла лицензии после того, как он собрал двоичные файлы для приложения. Я видел примеры запуска execute_process такая команда:

execute_process(COMMAND "gcc -o foo foo.cpp"WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
execute_process(COMMAND "./foo"WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE MY_FOO_VAR)

Я использую Visual Studio 2010 для сборки на Windows. Проблема в том, что я не уверен, как заставить CMake запустить программу во время процесса сборки VS. Я хочу, чтобы последним в операции сборки была временная метка файла лицензии, но я не знаю достаточно о VS или CMake, чтобы настроить это.

5

Решение

Вы говорите, что хотите запустить файл после вашей сборки. execute_process() работает во время CMake, а не во время сборки. То, что вы ищете, будет add_custom_command():

add_executable(LicenseStamper stamper.cpp)

add_custom_command(
OUTPUT stamped_file.lic
COMMAND LicenseStamper any other arguments
DEPENDS any/dependency.file
COMMENT "Stamping the license"VERBATIM
)

add_custom_target(
StampTheLicense ALL
DEPENDS stamped_file.lic
)

Пользовательская команда запустит исполняемый файл (и при необходимости соберет его сначала). Пользовательская цель будет управлять пользовательской командой — это зависит от выходных данных команды, поэтому, когда цель собирается, ей потребуется построить свою зависимость, вызывая выполнение пользовательской команды.

13

Другие решения

Других решений пока нет …