【发布时间】:2017-05-21 21:20:54
【问题描述】:
我需要您的帮助,因为我是 CMake 的新手。假设我有一个可执行目标 T,它依赖于源文件 A.c、B.cpp 和 c.cpp。我想用特定的标志编译 A.c 并创建目标文件 A.o.为简单起见,我们假设 B 和 C 将使用 g++ 使用相同的标志集进行编译,并且相应的目标文件应创建为 B.o C.o。然后我可以链接这些目标文件并使用 gcc 生成 T。我知道我可以使用常规的 makefile 分几步完成。基本上,我在编译带有特定标志的 A.c 和带有相同标志的其余文件时遇到了麻烦。不知道CMake到底应该怎么做?
add_executable(T A.c B.cpp C.cpp)
我知道 CMake 提供了一个 target_compile_options(),但我不知道如何将它用于我的案例?我想它可以为目标的全局标志设置,但不是为我所追求的!
【问题讨论】:
-
我最终做的是为 A.c 创建另一个库目标,但传入 OBJECT 参数,如here 中所述,带有所需的选项和标志。对于实际目标,我可以使用
add_executable(T B.cpp C.cpp $<TARGET_OBJECTS:A>)。因此,B 和 C 将使用另一个选项编译,然后将与 A.o 链接。
标签: gcc makefile compilation cmake