【问题标题】:run cmake with a txt file使用 txt 文件运行 cmake
【发布时间】:2021-12-20 22:31:35
【问题描述】:

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

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

./"executable" src/"txt file"

【问题讨论】:

  • 也许您可以创建一个后期构建作业。
  • 我会说把你的顾虑分开。您的构建工具应该构建。选择其他东西来为你运行它。

标签: c++ cmake


【解决方案1】:

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

#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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 2018-07-04
    • 2022-01-25
    • 2012-11-14
    • 1970-01-01
    • 2020-10-07
    • 2021-11-28
    • 2020-11-20
    相关资源
    最近更新 更多