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



例如,如果我有一个包含以下内容的makefile

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

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

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

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

由于目标文件本身并不是您正在构建的内容的最终结果,因此我怀疑缺少的问题有更多的上下文。 您可能正在从对象构建可执行文件。 只需使用 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

这将导致生成的生成文件显示生成的每个步骤中使用的完整命令行。

最新更新