2016-07-15 11 views
1

Kann ich einen zufälligen Namen für die ausführbare Datei von jedem Build haben?
Oder mit anderen Worten, ein anderer Name für die ausführbare Datei jeder Build-Aktion?Zufällige ausführbare Ausgabe mit CMake

Ich frage mich, ob eine zufällige Variable in die Build-Tool-Kette eingefügt werden könnte.

Der Grund für einen solchen Namen ist, dass die Virenprüfung meines Unternehmens ziemlich langsam ist - es hat lange gedauert, jede ausführbare Datei zu überprüfen, sogar länger als die Erstellung.

Ich verwende CLION 2.016,2 auf Win7, Werkzeugkette MinGW_w64_5.0, gebündelt CMake 3.5.2

+0

Es stellte sich heraus, dass die Ursache der langsam löschenden exe-Datei --- der "Application Experience" -Dienst ist. http://superuser.com/a/239164/446855 – caoanan

Antwort

2

Sie können immer POST_BUILD Schritte definieren, die ein anderes CMake-Skript aufrufen. Der einzige Nachteil in der folgenden Ansatz wäre, dass man nicht - da es zufällig ist - die ausführbaren Ausgabenamen selbst in CMake wiederzuverwenden:

CMakeLists.txt

cmake_minimum_required(VERSION 3.5) 

project(RandomExeName) 

file(WRITE main.cpp "int main() { return 0; }") 

add_executable(${PROJECT_NAME} main.cpp) 
add_custom_command(
    TARGET ${PROJECT_NAME} 
    POST_BUILD 
     COMMAND ${CMAKE_COMMAND} -D _file:PATH="$<TARGET_FILE:${PROJECT_NAME}>" 
           -P ${CMAKE_SOURCE_DIR}/CopyToRandom.cmake 
) 
set_property(TARGET ${PROJECT_NAME} PROPERTY SUFFIX ".temp") 

CopyToRandom.cmake

string(RANDOM _random) 
file(GLOB _old_files RELATIVE "${CMAKE_BINARY_DIR}" "*.exe") 
execute_process(
    COMMAND "${CMAKE_COMMAND}" -E remove ${_old_files} 
    COMMAND "${CMAKE_COMMAND}" -E copy "${_file}" "${_random}.exe" 
) 

# generate shortcut 
get_filename_component(_name "${_file}" NAME_WE) 
file(
    WRITE "${_name}.sh" 
     "#!/bin/bash\n" 
     "${_random}.exe" 
) 
1

Nein, Sie können nicht. Oder Sie müssen für jeden Build neu konfigurieren.

In Bezug auf Ihr tatsächliches Problem: Richten Sie den Virus-Checker aus, um Ihre Build-Verzeichnisse auszuschließen.

+0

Ich versuche mit CMake Zeichenfolge (TIMESTAMP ...) oder Zeichenfolge (RANDOM ...) – caoanan

+0

Sie werden während der Konfiguration Zeit ausgewertet und bleiben, bis Sie CMake erneut ausführen. – usr1234567