我正在编写一个小型控制台程序,我想将 stdin/stdout 定向到与 cpp 文件位于同一目录中的 txt 文件的读/写。 cpp 看起来像这样:
int main(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
//read input
scanf(...);
//proccess input
//proccsing....
//output
printf(...);
}
CMakeLists.txt 文件如下所示:
cmake_minimum_required(VERSION 3.5)
project(ACM)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(ACM ${SOURCE_FILES})
项目构建成功,但没有产生任何输出。检查后我注意到 freopen 找不到 txt 文件。 我应该向 CMakeLists.txt 添加什么以在构建中包含 txt 文件? PS:我是 CMake 的新手,因此不胜感激。
最佳答案
如果您确实需要它来进行调试,请将以下定义添加到 CMakeLists.txt
:
add_definitions(-DSRC_PATH="${CMAKE_SOURCE_DIR}")
然后像这样重新打开文件:
freopen(SRC_PATH"/in.txt","r",stdin);
freopen(SRC_PATH"/out.txt","w",stdout);
它在 Linux 上工作,应该在其他类 unix 平台上工作,并且可能需要在 Windows 下使用斜线进行一些额外的操作。无论如何,您可以通过 printf("%s\n", SRC_PATH"/in.txt");
进行调试。
关于c++ - 如何在 C++ 中使用带有 freopen 的 cmake?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384809/