4.3 KiB
1.cmake开发报告
1.1 前言
该篇md用于ipc项目下log功能的cmakelist的开发报告,以阐述其功能和组成。
1.2 功能介绍
-
设置库文件输出路径:
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
. 该语句用于设置该功能的静态库的生成路径,其中${LIBS_OUTPUT_PATH}
在/build/cmake/global_config.cmake被定义在项目根目录的/output_files/libs/。 -
添加实现功能的文件目录:
include_directories(./)
. 该语句旨在向编译器告知该功能的实现文件和头文件的所在位置。 -
添加功能目录到搜索路径:
set(CMAKE_AUTOMOC ON);set(CMAKE_INCLUDE_CURRENT_DIR ON)
这些 CMake 命令支持自动处理 Qt moc(元对象编译器),并将当前目录设置为包含在包含文件的搜索路径中;在构建过程中自动运行Qt moc编译器,用于包含Q_OBJECT宏的任何源文件。这对于为信号和插槽生成必要的C++代码是必需的;该选项将当前源目录添加到包含文件的搜索路径中。这允许构建系统查找与正在编译的源文件位于同一目录中的头文件。 -
收集、生成头文件列表:
file(GLOB_RECURSE HEADER_FILES "*.h")
该语句的功能是搜索当前目录及其子目录中扩展名为 .h 的所有文件。生成的文件列表存储在 HEADER_FILES 变量中。 -
收集源文件列表:
aux_source_directory(. SRC_FILES)
在本语句中,aux_source_directory(.SRC_FILES) 从当前目录(由 .) 及其子目录中收集所有源文件(例如,.cpp 个文件),生成的文件列表存储在 SRC_FILES 变量中。 -
添加编译器标志和定义到当前目录及其子目录:
add_definitions("-fexceptions")
添加编译器标志-fexceptions
以在代码中启用异常处理。此标志告诉编译器生成支持捕获和引发异常的代码。通过使用 add_definitions(),可以将特定的编译器标志或定义全局应用于项目或特定源文件。 -
创建静态库目标:
add_library(xlog STATIC ${SRC_FILES} ${HEADER_FILES})
在这种情况下,本语句使用提供的源文件和头文件列表创建一个名为“xlog”的静态库目标;STATIC
关键字指定库将构建为静态库,这意味着库代码将在编译时直接链接到最终可执行文件中;${SRC_FILES}
变量包含应编译并链接到库中的源文件(通常.cpp文件)的列表。${HEADER_FILES} 变量包含头文件(通常为 .h 文件)的列表,这些文件定义库使用的接口和声明。
1.3 总结
该篇cmakelists.txt的主要用途是对ipc项目下xlog功能的显现文件的编译和汇总。
2.1 返回码管理库概述
提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,内部实现不限于C或者C++,形成项目内部唯一返回码标准。
2.2 功能介绍
-
设置可执行文件的输出路径:
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
;set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
-
引入头文件目录:
include_directories
。include_directories
表示引入头文件搜索路径,当工程要用到某个头文件的时候,就会去该路径下搜索。 -
开启自动编译:
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
. 这段代码开启了 CMake 的元对象编译器、界面编译器和资源编译器自动编译,这样当项目使用了包含元对象的文件、界面文件和资源文件时 CMake 可以自动检测并编译。 -
查找在./src路径下的所有源文件:
aux_source_directory(./src SRC_FILES)
。 -
设置ReturnCode地址:
set(TARGET_NAME ReturnCode)
。根据提供的源文件创建一个叫ReturnCode的静态库。然后将目标文件与库文件进行链接:target_link_libraries(${TARGET_NAME} Log)
。
2.3 返回码test
-
添加test文件到目录,本目录为测试代码目录,目录结构保持与源码目录结构一致。
-
在test各个文件夹里添加相对应的CMakeLists.txt文件,通过
add_subdirectory(utils)
添加与源码目录结构相对应的子文件夹。 -
在src文件夹下创建ReturnCodeTest.cpp,调用返回码管理接口。在根目录添加第三方库文件,存放需要用到的第三方库。
2.4 总结
Cmake的语句都在CMakeLists.txt的文件中,Cmake运行之后就会产生想要的makefile文件,然后再直接make就可以编译出可执行程序。