如果文件不存在,则为Cmake复制目录

时间:2014-07-19 19:02:00

标签: file copy cmake

如果目录中的任何文件不存在于指定的目标中,我如何将目录的内容复制到另一个目录中? (我想复制只缺少的那些,而不是用新的替换)

1 个答案:

答案 0 :(得分:1)

这是你的表现..

1-将CMakeLists.txt添加到包含您要复制的文件夹的同一目录中。

file(GLOB_RECURSE allfiles RELATIVE "${CMAKE_SOURCE_DIR}/test/" "folder/*")

foreach( each_file ${allfiles} )
  set(destinationfile "${CMAKE_BINARY_DIR}/${each_file}")
  set(sourcefile "${CMAKE_CURRENT_SOURCE_DIR}/${each_file}")
    add_custom_command(TARGET uox3
      POST_BUILD
      COMMAND ${CMAKE_COMMAND}
      -Ddestinationfile=${destinationfile}
      -Dsourcefile=${sourcefile}
      -P ${CMAKE_CURRENT_SOURCE_DIR}/check.cmake
    )
endforeach(each_file)

2-创建另一个名为" check.cmake"的文件在同一个目录。

if(NOT EXISTS ${destinationfile})
  execute_process(COMMAND ${CMAKE_COMMAND}
  -E copy ${sourcefile} ${destinationfile})
endif()

那就是它。我为CMake 3.0.0进行了测试,但它确实有效。