使用CMake的随机可执行输出

使用CMake的随机可执行输出,cmake,clion,Cmake,Clion,我可以为每个构建的可执行文件指定一个随机名称吗? 或者,换句话说,每个构建操作的可执行文件都有不同的名称 我想知道是否可以在构建工具链中插入一个随机变量 之所以有这样一个名字,是因为我的公司的病毒检查速度非常慢——检查每个可执行文件花了很长时间,甚至比构建时间还要长 我在Win7上使用的是CLion 2016.2,工具链是MinGW_w64_5.0,捆绑的CMake 3.5.2不,你不能。或者您必须为每个构建重新配置 关于您的实际问题:建议病毒检查器排除您的生成目录。您始终可以定义调用另一个CM

我可以为每个构建的可执行文件指定一个随机名称吗?
或者,换句话说,每个构建操作的可执行文件都有不同的名称

我想知道是否可以在构建工具链中插入一个随机变量

之所以有这样一个名字,是因为我的公司的病毒检查速度非常慢——检查每个可执行文件花了很长时间,甚至比构建时间还要长


我在Win7上使用的是CLion 2016.2,工具链是MinGW_w64_5.0,捆绑的CMake 3.5.2不,你不能。或者您必须为每个构建重新配置


关于您的实际问题:建议病毒检查器排除您的生成目录。

您始终可以定义调用另一个CMake脚本的
POST\u 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")

我正在尝试使用CMake字符串(时间戳…)或字符串(随机…),它们将在配置期间进行评估,并一直保留到您重新运行CMake。结果表明,删除exe文件缓慢的原因是--“应用程序体验”服务。
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"
)