5

Tôi có một ứng dụng được viết bằng C++ mà tôi sử dụng CMake để xây dựng và phát hành các tệp nhị phân.Sử dụng CMake để chạy một chương trình C++ sau khi xây dựng

Tôi muốn biên dịch tập lệnh CMakeLists.txt và chạy tệp CPP được sử dụng để dấu thời gian và mã hóa tệp giấy phép sau khi đã tạo tệp nhị phân cho ứng dụng. Tôi đã nhìn thấy những ví dụ về cách chạy lệnh execute_process như thế này:

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) 

Tôi đang sử dụng Visual Studio 2010 để thực hiện việc xây dựng trên Windows. Vấn đề là tôi không chắc chắn làm thế nào để có được CMake để chạy một chương trình trong quá trình xây dựng của VS. Tôi muốn điều cuối cùng trong hoạt động xây dựng là dấu thời gian tệp giấy phép, nhưng tôi không thực sự biết đủ về VS hoặc CMake để có được thiết lập này.

Trả lời

13

Bạn nói rằng bạn muốn chạy tệp sau khi bạn xây dựng.execute_process() chạy ở thời gian thực hiện, không phải lúc xây dựng. Những gì bạn đang tìm kiếm sẽ là 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 
) 

Lệnh tùy chỉnh sẽ chạy tệp thực thi (và xây dựng nó trước tiên, nếu cần). Mục tiêu tùy chỉnh sẽ điều khiển lệnh tùy chỉnh - nó phụ thuộc vào đầu ra của lệnh, vì vậy khi mục tiêu được xây dựng, nó sẽ yêu cầu sự phụ thuộc của nó được xây dựng, làm cho lệnh tùy chỉnh chạy.

Các vấn đề liên quan