我刚刚开始接触C++。我是被迫的,因为我想学习物理模拟。经过大量的努力,我发现我需要在我的电脑上安装Microsoft Visual Studio,以便编辑和编译GitHub上提供的源文件。
但是我注意到GitHub上的一些作者在他们的项目中没有包含.sln文件,这样我就无法用Microsoft Visual Studio打开/编辑/编译它们。相反,那些包含.sln文件并打算在DirectX上运行的项目是我自己修改后能够编译/执行的。
那么...那些不包含.sln文件或不适用于DirectX的项目中缺少什么呢?
2条答案
按热度按时间mrfwxfqh1#
世界上有许多构建系统,但对于Windows生态系统来说,有几个占主导地位的系统。
.vcxproj
文件是使用MSBuild的Visual C++项目文件,.sln
文件是组织一个或多个.vcxproj
文件(对于C#,则是.csproj文件)的元文件。.sln/.vcxproj
文件,但是随着时间的推移,它已经失宠了,而且非常笨拙。CMakeList.txt
文件的存在表明了这一点。为了给CMake提供.sln文件的一些功能,CMake 3.20或更高版本支持
CMakePresets.json
文件,这使得它更容易在Visual Studio和Visual Code IDE中使用。有关Visual Studio内部版本中的详细信息,请参见Microsoft Docs。有关使用Visual Studio创建CMake的详细信息,请参见this article。
有关“makefile”的一般背景,请参见Wikipedia。
我上面的列表还远远不够完整,因为有很多构建系统(SharpMake、Meson、FASTbuild等)。
fruv7luv2#
Microsoft使用
.sln
文件作为Visual Studio管理项目(文件、编译规则、依赖项等)的一种方式,因此它是Microsoft特有的。大多数C项目不是使用Visual Studio编写的,而是使用其他编辑器和构建系统。没有
.sln
文件的项目可以有CMakeLists.txt
文件,可以用CMake编译(Visual Studio在最近的版本中得到了支持),或者meson.build
文件可以用meson编译,Makefile
可以用make编译,你明白了。有很多C的构建系统和IDE,因为它存在了很长时间,而且因为它是一种非常流行的语言(有很好的理由),所以人们创建了适合他们工作流的工具。然而,无论你选择使用什么构建系统或IDE,你编写的代码都不应该有任何差异(假设它符合C++的标准版本)。