CMake 複製檔案方法

2023/04/08 C++

CMake 複製檔案方法

在 CMake 中,可以使用以下幾種方式來複製檔案:

  1. file(COPY …)
  2. add_custom_command

如何在編譯 CMAKE File

在本教學中提供範例 CMakeLists.txt 之外,還必須在同一層路徑下建立 main.cpp。並執行以下指令才能正常編譯。

# 配置項目
cmake -S . -B build 
# 建構項目
cmake --build build
# 執行
./build/Debug/main.exe

方法一 file(COPY …)

file 命令可以用來複製檔案或目錄。以下範例將 ${CMAKE_SOURCE_DIR} 目錄下的 file.txt 檔案複製到 ${CMAKE_BINARY_DIR} 目錄中。

project(main)
set(CMAKE_BUILD_TYPE "Release")
add_executable(${PROJECT_NAME} main.cpp)

file(COPY ${CMAKE_SOURCE_DIR}/file.txt DESTINATION ${CMAKE_BINARY_DIR})

方法二 添加自定義的命令(add_custom_command)

這個命令會在建置 main 目標之後執行,將 ${CMAKE_SOURCE_DIR} 目錄下的 file.txt 檔案複製到 $<TARGET_FILE_DIR:main> 目錄中。

project(main)
set(CMAKE_BUILD_TYPE "Release")
add_executable(${PROJECT_NAME} main.cpp)

add_custom_command(
  TARGET main                     # 指定要添加自定義命令的目標
  POST_BUILD                      # 指定命令在編譯過程中的時機
  COMMAND ${CMAKE_COMMAND} -E copy   # 指定自定義的命令,這裡是複製檔案
          "${CMAKE_SOURCE_DIR}/file.txt"           # 指定源檔案
          "$<TARGET_FILE_DIR:main>/file.txt"      # 指定目標檔案
)

從下圖可以看到 $<TARGET_FILE_DIR:main> 指向的是 build/bin/debug。

以上測試都在 windows10 環境編譯

鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A

Search

    Table of Contents