如何设置 cmake,以便将 txt 文件作为资源添加到工作目录中

How to set cmake, in order to add txt files into working directory as resource?

本文关键字:资源 文件 添加 工作 txt 设置 何设置 cmake      更新时间:2023-10-16

CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(untitled)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(untitled ${SOURCE_FILES})

主.cpp

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
    string line;
    ifstream myfile ("test.txt");
    if (myfile.is_open())
    {
        while ( getline (myfile,line) )
        {
            cout << line << 'n';
        }
        myfile.close();
    }
    else cout << "Unable to open file";
    return 0;
}

我得到这个输出"无法打开文件"。文件test.txtCMakeLists.txtmain.cpp位于同一目录中。IDE 是 CLion。

如何设置CMakeLists.txt,以便将test.txt文件作为资源添加到工作目录中?

您可以使用file(COPY习语:

file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test.txt
     DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

但是,我也可以建议configure_file COPYONLY选项。这样,当修改test.txt时,CMake 将重新配置并重新生成生成。如果您不需要它,只需使用file(COPY

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test.txt
    ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)

您还将看到许多人使用 add_custom_command 来复制文件,但当您必须在构建步骤之间复制文件时,这更有用:

add_custom_command(
    TARGET untitled POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy
            ${CMAKE_SOURCE_DIR}/test.txt
            ${CMAKE_CURRENT_BINARY_DIR}/test.txt)

我认为在您的情况下,第一个示例是最合适的,但现在您的工具箱中拥有适用于所有场景的工具。