从 CMake 创建 Visual Studio 项目,Visual Studio 找不到可执行文件

Nec*_*gge 1 c++ cmake visual-studio

基本上,我遇到了与如何配置 CMake 以便生成的 Visual Studio 项目找到可执行文件中相同的问题 . 那里的答案都不适合我。

我有一个 CMake 项目,我只想从中创建一个 Visual Studio 2019 项目:

  • 所以我只是cmake .从根目录运行。
  • 然后我的根目录中有一个 *.sln 文件。

  • 使用 Visual Studio 2019 打开它后,我按下“Local Widows Debugger”按钮,它编译成功,但随后 IDE 抱怨:

    Unable to start program 'C:\Users...\x64\Debug\ALL_BUILD'. The system is unable to find the specified file.
    
    Run Code Online (Sandbox Code Playgroud)

使用 travis 一切都很好编译:https : //travis-ci.com/Necktschnagge/markov_chain_analyzer/builds/144941090

你可以在这里看到代码:https : //github.com/Necktschnagge/markov_chain_analyzer/tree/old

我需要做什么才能让 CMake 创建一个配置良好的 VS 解决方案,以便我可以运行调试器?

squ*_*les 7

当您使用 CMake 创建 Visual Studio 解决方案时,它会自动将启动项目设置为ALL_BUILD. 这是一个 CMake 预定义目标,它构建解决方案中的所有项目。它不是包含可以调试的可执行文件的项目。

在调试之前,您必须将解决方案资源管理器中的启动项目更改为可执行项目之一。您可以通过右键单击要调试的项目并选择Set as Startup Project 来执行此操作。如果您将 VS 与 CMake 集成一起使用,这里还有更多说明。

您还可以告诉 CMake 在从头开始构建 CMake 时默认设置不同的启动项目,使用VS_STARTUP_PROJECT. 把这样的东西放在你的顶级 CMake 文件中:

set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT MyExeTarget)
Run Code Online (Sandbox Code Playgroud)

现在,CMake 将设置MyExeTarget为 Visual Studio 中的启动项目,而不是ALL_BUILD.