如何在不调用链接器的情况下将 .cpp 文件编译为目标文件

问题描述 投票:0回答:2

我正在尝试与构建过程分开编译单个 .cpp 文件。

如果我进行完整构建,则编译步骤输出到创建项目时配置的目录。

但是,如果我只是要求编译,最终目标文件将位于与源相同的目录中。更糟糕的是,当它应该进行编译时,它会继续将目标文件链接到可执行文件。

注意,我正在使用 clang++ 为 C++11 进行编译,但我认为这对于为什么第二次调用 Clang++.exe 进行未请求的链接没有任何限制。

构建时,它会执行以下操作:

-------------- Build: Debug in GOTW (compiler: GNU GCC Compiler)---------------

clang++.exe -Wall -fexceptions  -g  -std=c++11 -stdlib=libstdc++    -c                
C:\Work\test\2010\C++11\CLang\GOTW\gotw.cpp -o obj\Debug\GOTW.o
clang++.exe  -o bin\Debug\GOTW.exe obj\Debug\GOTW.o    
Output size is 203.50 KB
Process terminated with status 0 (0 minutes, 11 seconds)
0 errors, 6 warnings (0 minutes, 11 seconds)

然而,当执行

Compile Current File
时,它会执行以下操作:

clang++.exe -std=c++11 -stdlib=libstdc++    -c GOTW.cpp -o GOTW.o
1 warning generated.
clang++.exe  -o GOTW.exe GOTW.o   

我不明白为什么它会输出第二步,也不明白如何让它像构建一样使用 obj 和 bin 目录。

c++ compilation codeblocks
2个回答
29
投票

使用

-c
选项。

-c

运行以上所有代码,加上汇编器,生成目标“.o” 目标文件。


4
投票

g++ -c *.cpp 它将 .cpp 编译为 .o

© www.soinside.com 2019 - 2024. All rights reserved.