向项目添加命令行参数

Yuc*_*ong 9 cmake

我的问题是有点类似这种SO却不尽相同.

HelloWorld用以下方法创建了一个程序:

add_executable( HelloWorld ${SRC} )
Run Code Online (Sandbox Code Playgroud)

当我生成项目文件(例如Visual Studio .sln文件或XCode .xcodeproj文件)时.我想点击运行按钮并在HelloWorld执行程序时传入一些命令行参数,如下所示:

./HelloWorld --gtest_filter=Test_Cases1*
Run Code Online (Sandbox Code Playgroud)

另请参阅此SO以了解如何在Visual Studio中完成此操作.

是否可以在CMakeList文件中执行此操作?如果没有,为什么?

Rol*_*ger 12

为什么这么复杂?所描述的VS和CMake的支持这个开箱这里.打开VS中的CMakeLists.txt文件,打开"调试和启动设置"(例如,通过"CMake"菜单或右键单击"解决方案资源管理器".例如:

在此输入图像描述

将程序参数添加到弹出的"launch.vs.json"文件中的"args"中.

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "tests\\hellotest",
      "name": "tests\\hellotest with args",
      "args": ["argument after argument"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 在 vs2022 中不起作用 (2认同)

Kym*_*oco 8

CMake 3.13.0看起来将以以下目标属性的形式添加对此的支持

  • VS_DEBUGGER_COMMAND_ARGUMENTS -设置Visual Studio C ++目标的本地调试器命令行参数。
  • VS_DEBUGGER_ENVIRONMENT -设置Visual Studio C ++目标的本地调试器环境。

它扩展了这些命令的使用,自CMake 3.12起可用:

  • VS_DEBUGGER_COMMAND -设置Visual Studio C ++目标的本地调试器命令。
  • VS_DEBUGGER_WORKING_DIRECTORY -设置Visual Studio C ++目标的本地调试器工作目录。

  • 我们如何使用这些? (4认同)

Rei*_*ica 5

CMake没有内置支持.原因是DebuggingVisual Studio Project属性选项卡中的设置不存储在项目文件(.vc[x]proj)中,而是存储在特定于用户和计算机的.user文件中,并且CMake不会生成这些设置.

您可以在CMake中自己编写代码(我在工作中为我们的框架执行了此操作).该文件只是XML,因此您可以根据需要预先填充它.它的结构很容易理解.例如,正在调试的程序的命令行参数存储在XML元素(嵌套)中的CommandArguments属性中.<DebugSettings><Configurations><Configuration>

  • 只要您使用 CMake &gt;= 3.13.0,此答案就不再有效。见我的[下面的答案](/sf/answers/3658540091/) (2认同)