我希望将许多.cc文件编译成一个.o文件。
我正在使用bash脚本,我需要这样做,将我的单元测试源文件构建到unit_test.o文件中,但是它说的是“g ++:不能指定-o with -c或-S with multiple files “ 我在脚本的下一个阶段链接这些源文件。
到目前为止,我有;
g++ -Wno-deprecated -std=c++0x \
-o $Unit_Test_Output_Directory/unit_test.o \
-c $Unit_Test_Source_Directory/test1.cc $Unit_Test_Source_Directory/test2.cc
然后我得到了-I和-L,bash中的“\”用于将命令分成多行。
然后在链接阶段,我将我的unit_test.o和源文件的.o链接到unit_test_executable。
有人可以帮助我吗?我是否需要继续为-o unit_test1.o -c test1.cc调用构建函数,然后对于测试2 ...并在链接阶段链接unit_test1.o和unit_test2.o?
我也尝试过失败:
g++ -Wno-deprecated -std=c++0x \
-o $Unit_Test_Output_Directory/unit_test1.o \
$Unit_Test_Output_Directory/unit_test2.o \
-c $Unit_Test_Source_Directory/test1.cc \
$Unit_Test_Source_Directory/test2.cc
答案 0 :(得分:1)
您无法将多个源文件编译为单个目标文件。每个源文件都必须编译为自己的目标文件。
您必须为每个源文件单独执行此操作:
g++ -Wno-deprecated -std=c++0x \ -o $Unit_Test_Output_Directory/unit_test1.o \ -c $Unit_Test_Source_Directory/test1.cc g++ -Wno-deprecated -std=c++0x \ -o $Unit_Test_Output_Directory/unit_test2.o \ -c $Unit_Test_Source_Directory/test2.cc