我可以爲每個版本的可執行文件指定一個隨機名稱嗎?或者,換句話說,每個構建操作的可執行文件的名稱不同?CMake的隨機可執行文件輸出
我不知道是否可以將一個隨機變量插入到構建工具鏈中。
這樣一個名字的原因是我公司的病毒檢查速度很慢 - 檢查每個可執行文件需要很長時間,甚至比構建時間還要長。
我使用的克利翁2016.2 Win7上,工具鏈是MinGW_w64_5.0,捆綁的CMake 3.5.2
我可以爲每個版本的可執行文件指定一個隨機名稱嗎?或者,換句話說,每個構建操作的可執行文件的名稱不同?CMake的隨機可執行文件輸出
我不知道是否可以將一個隨機變量插入到構建工具鏈中。
這樣一個名字的原因是我公司的病毒檢查速度很慢 - 檢查每個可執行文件需要很長時間,甚至比構建時間還要長。
我使用的克利翁2016.2 Win7上,工具鏈是MinGW_w64_5.0,捆綁的CMake 3.5.2
您總是可以定義調用另一個CMake腳本的POST_BUILD
步驟。在下面的方法唯一的缺點是,你不能 - 因爲它是隨機的 - 在自己的CMake重用可執行文件的輸出名稱:
的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"
)
你就是不行。或者你必須重新配置每個版本。
關於您的實際問題:建議病毒檢查程序排除您的構建目錄。
我正在嘗試使用CMake字符串(TIMESTAMP ...)或字符串(RANDOM ...) – caoanan
它們將在配置期間進行評估並保留,直到您重新運行CMake。 – usr1234567
原來慢刪除exe文件的原因是---「應用程序體驗」服務。 http://superuser.com/a/239164/446855 – caoanan