例如,如果我有makefile
包含此内容:
dynArray.o: dynArray.c dynArray.h type.h
gcc -Wall -ansi -c dynArray.c
我如何将其转换为CMakeLists.txt
文件?
答案 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显示构建的每个步骤使用的完整命令行。