静态链接库
cmake实践可能用到静态链接库,此处记录。
GCC创建和使用静态链接库(.a文件) 全文
菜鸟课程 提到编译过程、静态库与动态库的内存占用区别:
cmake
- cmake是什么?
帮助提高cpp编译效率的工具 - 为什么要有cmake?
不同平台下有各自的make,对应的语法格式各不相同,背诵量大。利用cmake,可用统一语法生成不同平台下的make文件,并利用make编译,提高工作效率。
编译
- cmake hello world 单文件项目编译
- cmake 静态库编译 可根据开头提到的GCC创建和使用静态链接库(.a文件) 创建静调库文件,并依据教程调用。注意csdn博客中提到的
要正确使用aux_source_directory命令.
根据作者教程作了简易的math项目,运行结果如下:
多目录编译
项目管理子目录cmake编译中,在子目录工程中建立了power库(子目录中add_library (power ${LIB_SRCS})
),并在主工程中使用它(主目录的target_link_libraries(testCmake power)
)。
在子目录工程中利用PROJECT_SOURCE_DIR
引入了项目根目录:
include_directories(
${PROJECT_SOURCE_DIR}/include
)
详见PROJECT_SOURCE_DIR中提到:
This is the source directory of the last call to the project() command made in the current directory scope or one of its parents.
该变量的值是当前工程或父工程调用project
的目录
3个阶段
cmake分为3个阶段,
- configure 配置一些cmake配置文件里的变量
- generate 根据cmake配置文件,生成make文件。如果定义了
configure_file
,会生成.h
文件 - build 执行make编译即可
ccmake
根据CMake和CCMake的区别 – cmake-curses-guiccmake是带交互界面的cmake,
CCMake的安装
CCMake包含在cmake-curses-gui包中,所以安装很简单,已安装完CMake以后,只需执行如下命令:
sudo apt-get install cmake-curses-gui
即可完成CCMake的安装。