CMake学习笔记

CMake 是一个跨平台的安装( 编译 )工具,基于 Makefile做的二次开发,主要是Makefile难度太大了。可以用简单的 语句来描述所有平台安装 (编译过程 )。他能够输出各种样的 makefile或者 project文件,能测试 编译器 所支持的 C++ 特性 ,类似UNIX 下的 automake 。只是 CMake的组态档 取名为 CMakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准档 (如 Unix的 Makefile或 WindowsVisual C++ 的 projects/workspaces,然后 再依一般的建构方式使用。

下面举例说明操作。

1、整个目录结构

 CmakeLists.txt

# 单个目录实现
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 工程,他不是执行文件名
PROJECT(Darren)
# 手动加入文件 ${变量名}} ,比如${SRC_LIST}
SET(SRC_LIST main.c)
set(SRC_LIST2 main2.c)
# MESSAGE和echo类似 
MESSAGE(STATUS "PROJECT_BINARY_DIR DIR " ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "PROJECT_SOURCE_DIR DIR " ${PROJECT_SOURCE_DIR})

# 生产执行文件名0voice  0voice2
ADD_EXECUTABLE(0voice ${SRC_LIST})
ADD_EXECUTABLE(0voice2 ${SRC_LIST2})

main.c

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("0voice CMake!!!\n");

    return 0;
}

在CMakeLists.txt所在当前目录cmake.,运行会发现会生成Makefile、CMakeCache.txt、CMakeFiles、cmake_install.cmake中间文件。

执行 make生成

在上一级目录操作,如下图:

 

2、 3.1-1的目录结构

 dir1下的所有源码如图

 dir2下的所有源码如图

根目录CMakeLists.txt

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
PROJECT(0VOICE)

ADD_SUBDIRECTORY(src)

MESSAGE(STATUS "TOP CMAKE_CURRENT_SOURCE_DIR -> " ${CMAKE_CURRENT_SOURCE_DIR})

INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/0voice)
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/0voice)

main.c

#include <stdio.h>
#include "dir1.h"
#include "dir2.h"
int main(int argc, char *argv[])
{
    printf("0voice CMake!!!\n");
    printDir1();
    printDir2();

    return 0;
}

默认是静态库,静态库操作时没有问题。 

下面动态库安装后运行有问题。 

不同系统搜索路径不一样,可以把/usr/local/lib加入到/etc/ld.so.conf,然后ldconfig后再运行程序,完美运行。

本专栏知识点是通过<零声教育>的线上课学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接,详细查看课程的服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值