5

Mam aplikację napisaną w C++, której używam CMake do budowania i zwalniania plików binarnych.Używanie CMake do uruchamiania post-build programu w C++

Chciałbym skompilować skrypt CMakeLists.txt i uruchomić plik CPP, który służy do datownika i szyfrowania pliku licencji po utworzeniu plików binarnych dla aplikacji. Widziałem przykłady działa komenda execute_process takie jak to:

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) 

Używam Visual Studio 2010 zrobić build na Windows. Problem polega na tym, że nie jestem pewien, jak zmusić CMake do uruchomienia programu podczas procesu budowania VS. Chcę, aby ostatnią rzeczą w operacji budowania była sygnatura czasowa pliku licencji, ale tak naprawdę nie wiem wystarczająco dużo o VS lub CMake, aby uzyskać tę konfigurację.

Odpowiedz

13

Mówisz, że chcesz uruchomić plik po swojej kompilacji.execute_process() działa w CMake-time, nie w czasie budowy. Co szukasz byłoby 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 
) 

Zwyczaj polecenie uruchomienia pliku wykonywalnego (i budować go najpierw, jeśli to konieczne). Cel niestandardowy będzie sterował niestandardową komendą - zależy to od danych wyjściowych polecenia, więc gdy obiekt docelowy zostanie zbudowany, będzie wymagał zbudowania zależności, powodując uruchomienie polecenia niestandardowego.

Powiązane problemy