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})
Run Code Online (Sandbox Code Playgroud)
main.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;
}
Run Code Online (Sandbox Code Playgroud)
我得到此输出“无法打开文件”。该文件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})
Run Code Online (Sandbox Code Playgroud)
但是我也可以建议configure_file
使用该COPYONLY
选项。这样,test.txt
修改后,CMake将重新配置并重新生成构建。如果您不需要,请使用file(COPY
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test.txt
${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
Run Code Online (Sandbox Code Playgroud)
您还将看到许多人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)
Run Code Online (Sandbox Code Playgroud)
我认为在您的情况下,第一个示例是最合适的,但是现在您的工具箱中有适用于所有情况的工具。
归档时间: |
|
查看次数: |
1796 次 |
最近记录: |