c++ - 在没有 Visual Studio 的情况下在 Windows 上构建 .SLN 文件?
问题描述
我最近一直在尝试在 C++ 中设置我的 CMake 环境和一些“hello world”代码。我添加了一个CMakeLists.txt
并添加了我的配置,但是当我cmake .
在命令行中运行时,与所有教程都不同。
教程中的人使用的是基于 Unix 的系统,因此该命令cmake .
正在生成一个“makefile”。然后,他们使用命令构建了 makefile make
。
由于我在 Windows 上,它生成了一个 msvc.sln
文件而不是一个 makefile。我的问题是 - 我如何构建 .sln 文件,类似于他们在 Linux 上的做法?我想在没有 Visual Studio 2019 的情况下执行此操作,最好在命令提示符下执行。
我试过搜索这个问题,但没有找到我要找的东西。先感谢您。
解决方案
首先,您永远不应该使用cmake .
. 它会以名称冲突的形式引发问题,并且几乎不可能进行干净的重建。
如果您使用的是最新版本的 CMake(您应该是),则构建项目的标准方式取决于后端生成器是single-config还是multi-config。
如果是单一配置(如 Make 或 Ninja),则命令为:
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -S /path/to/sources -B /path/to/build
$ cmake --build /path/to/build
调用 CMake 时,该目录/path/to/build
不需要存在。如果你想要一个Debug
构建,而不是Release
,你只需在第一行替换它。你不应该在没有设置的情况下运行单一配置生成器CMAKE_BUILD_TYPE
。
如果它是multi-config,比如 Visual Studio,那么命令是:
$ cmake -G "Visual Studio 16 2019" -A x64 -Thost=x64 -S /path/to/sources -B /path/to/build
$ cmake --build /path/to/build --config Release
这里的主要区别在于配置是在第二个(构建)命令中指定的,而不是第一个(配置)。
推荐阅读
- python - 使用 asyncio.run() 时关闭 Asyncio 事件循环
- ms-access - 如何使用 MS Access 中的 SQL 查询将字段值增加 1
- c++ - 具有唯一指针的右值和移动语义:对象 0x7ffee5c7b670 的错误:未分配被释放的指针
- python - Python:为什么使用 asfreq() 会删除我的最后一行数据?
- html - 从页面的全宽开始到结束,如何在标题内有一个容器的背景?
- html - 如果电子邮件已存在或为空,请检查文本输入
- cmake - CMake 错误:找不到 VTK 文件
- azure - Azure kubernetes - Istio 和多个 kubernetes 应用程序?
- reactjs - 我可以在函数中调用 React Hook 吗?
- python - 如何从非正常数据框中绘制一些数据?