MSVC 的sln工程,可以用devenv.com/exe 调用编译 .
对于C++/C 的编译工具链主要是:
- cl.exe
- linker.exe
cl.exe 与 linker.exe 的命令行参数和使用可参考说明文档:
简单实例
命令格式: CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
| 选项 | 解释 |
|---|---|
| option | 一个或多个 CL 选项。 请注意,所有选项都适用于所有指定的源文件。 选项由正斜杠 (/) 或短划线 (-) 指定。 如果选项采用参数,则选项的说明会记录选项和参数之间是否允许有空格。 除了/HELP 选项外) (选项名称不区分大小写。 有关详细信息,请参阅 CL 选项的顺序 。 |
| file | 一个或多个源文件、.obj 文件或库的名称。 CL 编译源文件,并将 .obj 文件和库的名称传递到链接器。 有关详细信息,请参阅 CL 文件名语法 。 |
| lib | 一个或多个库名称。 CL 将这些名称传递到链接器。 |
| 命令文件 | 包含多个选项和文件名的文件。 有关详细信息,请参阅 CL 命令文件 。 |
| 链接-选择 | 一个或多个MSVC 链接器选项。 CL 将这些选项传递到链接器。 |
CL与LINK 执行过程中可以读取环境参数,请参考官方文档。
| 环境变量 | 说明 |
|---|---|
| LINK 和 _LINK_ | LINK 工具预置 LINK 环境变量中定义的选项和自变量并在处理之前将 _LINK_ 环境变量中定义的选项和自变量附加到命令行。 |
| LIB | 在搜索命令行或 /BASE 选项上指定的对象、库或其他文件时,LINK 工具使用 LIB 路径。 它还可使用 LIB 路径查找在对象上命名的 .pdb 文件。 LIB 变量可以包含一个或多个路径规范,用分号分隔。 一个路径必须指向 Visual C++ 安装的 \lib 子目录。 |
| PATH | 如果该工具需要运行 CVTRES 并在与 LINK 自身相同的目录中找不到文件。 (LINK 需要 CVTRES 链接 .res 文件。) PATH 必须指向 Visual C++ 安装的 \bin 子目录。 |
| TMP | 用于链接 OMF 或.res 文件时指定目录。 |
命令文件
cl ... @RESP ...
@RESP 是可以将命令行内容写在文件中,用于减小命令长度, 避免命令行传参过长错误 。
预处理
cl test.cpp /P @RESP /Fi "test.i"
编译
cl test.i /c @RESP /Fo "test.obj"
链接
由 obj (COFF文件) 生成 PE 文件 .
link test.obj @RESP /link XXXX.lib /out:test.exe
生成动态链接库
link /dll @objlist.txt @liblist.txt @exports.txt
