У меня есть приложение, написанное на 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, чтобы настроить это.
Вы говорите, что хотите запустить файл после вашей сборки. 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
)
Пользовательская команда запустит исполняемый файл (и при необходимости соберет его сначала). Пользовательская цель будет управлять пользовательской командой — это зависит от выходных данных команды, поэтому, когда цель собирается, ей потребуется построить свою зависимость, вызывая выполнение пользовательской команды.
Других решений пока нет …