如何设置 cmake,以便将 txt 文件作为资源添加到工作目录中
How to set cmake, in order to add txt files into working directory as resource?
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.txt
、CMakeLists.txt
和main.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)
我认为在您的情况下,第一个示例是最合适的,但现在您的工具箱中拥有适用于所有场景的工具。
相关文章:
- 参考资源文件VC++中的$(SolutionDir)
- 使用 Bazel 生成 QT 资源文件
- meson-build:wxWidgets 资源文件,用于 Windows 未构建
- VS:在构建/exe中包含资源文件
- VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- 连接资源文件中的字符串,并将其传递给菜单项字符串 (winapi) c++
- 无法在可视C++中检索资源文件数据
- C++ 从资源文件更改光标时出错
- 如何从资源文件(.rc 文件)加载位图?
- 在 Visual Studios 中关闭 rc 资源文件的编辑
- 应使用 CMake install 命令将可执行资源文件安装到何处?
- MSBuidel - 将资源文件添加到项目后静态库编译失败
- 生成的资源文件包含奇怪的包含文件
- 如何在没有QT项目的情况下使用Visual Studio中的QT资源文件
- 如何获取资源文件中对话框的按钮控件的大小和位置
- Qt 如何在宏中使用 .qrc 资源文件
- 可以一个#define一个文字字符串,其中包含用于资源文件的非ANSI字符的字符串
- 逐行读取用户定义的文本资源文件
- 是否可以从资源文件指定要使用的 COM 对话框
- 使用 waf 时如何组织测试资源文件