例如,如果我有一个包含以下内容的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
这将导致生成的生成文件显示生成的每个步骤中使用的完整命令行。