运行 带有 txt 文件的 cmake

run cmake with a txt file

当我 运行 我的 C++ 程序时,我需要它来打开存储在我的根目录中的文本文件。如何让CMake执行我用文本文件编写的程序?

当我单独使用 Makefile 构建我的程序时,我使用命令

./"executable" src/"txt file"

老实说,到目前为止,最简单的方法就是修改您的主要功能。就目前而言,您的主要功能必须从命令行参数中获取文件名。像这样:

#include <iostream>

int main(int argc, char *argv[]) {
  const auto filename = argv[1];

  // Do stuff with filename
  std::cout << filename;
  return 0;
}

您可能应该做的是在没有提供参数的情况下修改该文件以使用一些默认文件名:

#include <iostream>

int main(int argc, char *argv[]) {
  const auto filename = argc < 2 ? "/root/something.txt" : argv[1];

  // Do stuff with filename
  std::cout << filename;
  return 0;
}

根据您想要的复杂程度,您还可以在 CMakeLists 中指定该文件名。只需添加一个定义,如

set(DEFAULT_FILENAME "/root/something.txt")
target_compile_definitions(my_target PRIVATE "DEFAULT_FILENAME=\"${DEFAULT_FILENAME}\"")

然后在你的主函数中把文件名当作宏:

#include <iostream>

int main(int argc, char *argv[]) {
  const auto filename = argc < 2 ? DEFAULT_FILENAME : argv[1];

  // Do stuff with filename
  std::cout << filename;
  return 0;
}

总而言之...听起来您想要构建一个带有文件名的可执行文件。上述方法将实现这一点。

但是,有一个更简单的解决方案...只需创建一个 运行 所需文件的脚本。例如,只需抛出您的代码

./"executable" src/"txt file"

进入脚本run.sh

然后使用

使该脚本运行可用(假设Linux)
chmod +x run.sh

还有 运行 那个脚本:

./run.sh