什么是GCC -c选项的CMake等价物?

时间:2017-11-05 19:56:46

标签: c gcc makefile cmake

例如,如果我有makefile包含此内容:

dynArray.o: dynArray.c dynArray.h type.h 
    gcc -Wall -ansi -c dynArray.c

我如何将其转换为CMakeLists.txt文件?

2 个答案:

答案 0 :(得分:1)

可能CMake's object libraries会这样做,这意味着编译对象但不像普通库那样将它们存档。

add_library(<name> OBJECT <src>...)

答案 1 :(得分:1)

由于单独的目标文件不是您正在构建的最终结果,因此我怀疑缺少该问题的上下文。您可能正在从对象构建可执行文件。只需使用add_executable指定目标和构成目标的源文件。然后使用target_compile_definitions指定编译该目标的源文件时所需的编译选项。例如:

add_executable(dynArray dynArray.c dynArray.h type.h)
target_compile_definitions(dynArray PRIVATE -Wall -ansi)

您可以使用Unix Makefiles生成器并将VERBOSE=1传递给make命令来验证生成的编译命令是否符合预期:

mkdir build; cd build
cmake -G "Unix Makefiles" ..
make VERBOSE=1

这将导致生成的Makefile显示构建的每个步骤使用的完整命令行。