01.包含头文件
在 CMake 中包含头文件可以使用 include_directories() 函数。
该函数可以将一个目录添加到包含目录列表中,CMake 在编译时会在这些目录中查找头文件。
例如,如果我们要包含名为 myheader.h 的头文件,该头文件位于路径 /path/to/myheader.h,则可以使用以下命令:include_directories(/path/to)
然后在源代码中就可以直接包含 myheader.h 头文件了。
02.CMake 生成静态库
要生成静态库,可以使用 CMake 的 add_library 命令并指定库类型为 STATIC,如下所示:
# 定义静态库名称和源文件
add_library(mylib STATIC source1.cpp source2.cpp)
# 指定库的输出路径
set_target_properties(mylib PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
在上面的示例中,mylib 是静态库的名称,source1.cpp 和 source2.cpp 是库中包含的源文件。set_target_properties 命令用于指定库的输出路径。
使用 add_library 命令时,还可以指定其他选项,例如:
1. PUBLIC:将选项传递给使用库的目标,这些选项包括头文件搜索路径、编译器和链接器选项等。
2.PRIVATE:仅在当前目标中使用,不会传递给使用库的目标。
3.INTERFACE:仅在使用库的目标中使用,不会传递给当前目标。
例如,如果要将 include 目录添加到头文件搜索路径中,并将某些编译器选项传递给使用库的目标,可以使用以下命令:
target_include_directories(mylib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_options(mylib PRIVATE -Wall -Wextra)
03.CMake包含静态库
要在CMake中包含静态库,可以使用add_library命令指定库的名称、类型和源代码文件列表。例如,以下命令将名为mylib的静态库添加到项目中:
add_library(mylib STATIC source1.cpp source2.cpp)
然后,可以使用target_link_libraries命令将库链接到可执行文件或其他库中。例如,以下命令将mylib链接到名为myexe的可执行文件中:
add_executable(myexe main.cpp)
target_link_libraries(myexe mylib)
这将确保在编译myexe时,CMake将mylib静态库链接到可执行文件中。