在Visual C++中通过命令行编译

5
有人知道如何在Visual C++中使用命令行编译器('cl'和'link')构建项目吗?我们更习惯于使用'make'和'gcc',但最近被转移到了Visual Studio。我想我们可以使用nmake,但我希望得到有关使用'cl'和'link'的信息(例如在没有.sln文件的情况下进行编译)。
我们想要的是类似于以下内容:
1. 创建目标文件 2. 将目标文件链接以创建可执行文件
但我似乎无法使用命令行参数使其正常工作。请帮忙解决?

1
你尝试过什么?总体概念与gcc相同,创建目标文件,然后链接它们。 - Greg Hewgill
你为什么想要这样做呢?如果你需要访问 MSVS 特定的库,为什么不使用完整的 MSVS(反正你已经可以访问);否则,你可以像在 make/gcc 世界中一样使用 gcc/g++(通过 cygwin 或 mingw)。 - Attila
3个回答

3
您需要在路径中获取2个文件:
- vcvarsall.bat - cl.exe vcvarsall.bat是一个shell脚本,负责确定您所运行的体系结构,并将多个文件夹包含到您的路径中,这些文件夹是cl编译器所需的。在我的计算机上,此脚本位于C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC下。
cl.exe是编译器本身,在我的计算机上位于C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin下。
我简单地声明了一个环境变量VC_HOME:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC,并在路径中包含%VC_HOME%;%VC_HOME%\bin;。
现在,当您打开shell时,首先运行vcvarsall.bat,然后可以说:cl MyProgramm.cpp

3

如我经常说的那样,任何与Microsoft相关的内容都可以在MSDN和快速的谷歌搜索中找到。

cl.exe的文档可在此处找到:http://msdn.microsoft.com/en-us/library/ms235639%28v=vs.100%29.aspx

很简单,只需进入cl.exe的目录并在cmd中输入以下内容:

cl.exe /? 然后它将列出所有可用的标志。


1

编辑:抱歉,没有注意到“不带.sln”的部分。请忽略此答案。我将其保留给那些可能需要它但它并不是原始问题的答案。

如果您只想构建解决方案/项目文件(也就是说,大多数构建设置已在项目文件中定义),可以使用devenv.exe为您构建解决方案/项目-这可能是从命令行执行构建最简单的方式。

例如:

devenv.exe myapp.sln /Rebuild "Release|x64"

清除并生成 Release|x64 配置中的myapp.sln解决方案。

如果您运行

devenv.exe /?

命令,它会提供所有命令行选项。您可以使用devenv通过使用`/project'开关仅构建解决方案中的特定项目。

如果您需要更多的灵活性(并且愿意花费大量时间编写正确的脚本),您可以使用nmake从命令行构建,但我不太熟悉,因此无法提供有用的建议。


3
问题中说:“就像没有.sln文件一样编译” 意思是OP想要像在终端中使用g++命令一样进行编译。 - Aleks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接