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

Posted

技术标签:

【中文标题】从 CMake 创建 Visual Studio 项目,Visual Studio 找不到可执行文件【英文标题】:Creating Visual Studio Project from CMake, Visual studio does not find executable 【发布时间】:2020-01-17 14:35:01 【问题描述】:

基本上,我的问题与 How to configure CMake so that the generated Visual Studio project finds the executable?。那里的答案都不适合我。

我有一个 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.

使用 travis 也可以正常编译:https://travis-ci.com/Necktschnagge/markov_chain_analyzer/builds/144941090

您可以在此处查看代码:https://github.com/Necktschnagge/markov_chain_analyzer/tree/old

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

【问题讨论】:

现代 Visual Studio 版本已直接集成 CMake:docs.microsoft.com/en-us/cpp/build/…,因此您现在可以绕过所有这些。 你通常不会启动“all_build”项目。 【参考方案1】:

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

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

在从头开始构建 CMake 时,您还可以告诉 CMake 默认设置一个不同启动项目,使用 VS_STARTUP_PROJECT。在您的*** CMake 文件中添加这样的内容:

set_property(DIRECTORY $CMAKE_CURRENT_SOURCE_DIR PROPERTY VS_STARTUP_PROJECT MyExeTarget)

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

【讨论】:

以上是关于从 CMake 创建 Visual Studio 项目,Visual Studio 找不到可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是从 CMake 生成 Visual Studio 解决方案或 Makefile

使用 CMake 和 Visual Studio 2019 编译 GLEW?

加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目

加速图像处理的神器: INTEL ISPC编译器基于CMAKE快速创建VISUAL STUDIO项目

从 Visual Studio 文件构建动态库

我想用 CMake 生成和编译 Visual Studio 项目我需要从构建中排除单元测试文件。有没有办法做到这一点?