0

我希望将许多 .cc 文件编译成一个 .o 文件。

我正在使用我需要做的 bash 脚本将我的单元测试源文件构建到 unit_test.o 文件中,但它说“g ++:不能用 -c 或 -S 指定 -o 和多个文件”我链接这些源文件在脚本的下一阶段。

到目前为止,我有;

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
4

1 回答 1

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
于 2013-03-13T13:29:25.323 回答