博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cmake基本用法
阅读量:4286 次
发布时间:2019-05-27

本文共 2370 字,大约阅读时间需要 7 分钟。

cmake基本用法

我们编写一个C++单例类,使用cmake构建项目,主要是为了记录一下cmake的基本用法。
首先项目文件夹为DemoProject,我们创建一个main.cpp作为我们的主文件,创建一个子文件夹Singleton,在Singleton中创建Singleton.h和Singleton.cpp作为我们的单例类。代码如下,很简单,就是获取一个单例然后调用它的函数:

main.cpp

#include <iostream>

#include <Singleton.h>

int main() {

  Singleton::getInstance()->print();
}
接下来Singleton类的实现如下:

Singleton.h

//

// Created by yue on 17-10-24.
//

#ifndef DEMOPROJECT_GETSINGLETON_H

#define DEMOPROJECT_GETSINGLETON_H

#include<iostream>

class Singleton {

public:
    static Singleton* getInstance();
    void print();
private:
    Singleton(){}
};

#endif //DEMOPROJECT_GETSINGLETON_H
Singleton.cpp

//

// Created by yue on 17-10-24.
//

#include "Singleton.h"

Singleton* Singleton::getInstance() {

  static Singleton instance;
  return &instance;
}

void Singleton::print() {

  std::cout<<"success"<<std::endl;
}
接下来开始编译这个类,首先在Singleton文件夹下创建build存放编译后得到的静态库与动态库,然后编写CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.0)    #最低需要的cmake版本

project(Singleton)                     #工程名称

set(CMAKE_CXX_STANDARD 11)             #C++11标准

set(SOURCE_FILES Singleton.cpp)        #设置变量SOURCE_FILES值为源文件名

set(CMAKE_CXX_FLAGS "-std=c++11")      #编译选项,实例中用到nullptr,故需要加--std=c++11

add_library(Singleton SHARED ${SOURCE_FILES})         #生成动态库

add_library(Singleton_static STATIC ${SOURCE_FILES})  #生成静态库
set_target_properties(Singleton_static PROPERTIES OUTPUT_NAME "Singleton") #设置输出静态库名称
然后在build中执行cmake..和make得到动态库和静态库。
最后编译工程,在DemoProject中创建CMakeLists.txt,内容如下:

cmake_minimum_required(VERSION 3.0)

project(DemoProject)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)

set(CMAKE_CXX_FLAGS "-llog4cplus -lpthread -pthread -std=c++11")  
#向工程添加多个特定的头文件搜索路径
include_directories(/home/yue/桌面/Tianyan/DemoProject/log4cplus/build/include
                    /home/yue/桌面/Tianyan/DemoProject/boost/boost_1_65_1/build/include
                    /home/yue/桌面/Tianyan/DemoProject/Singleton)
#添加共享库路径
link_directories(/home/yue/桌面/Tianyan/DemoProject/log4cplus/build/lib
                 /home/yue/桌面/Tianyan/DemoProject/boost/boost_1_65_1/build/lib
                 /home/yue/桌面/Tianyan/DemoProject/Singleton/build)
#生成可执行文件
add_executable(DemoProject ${SOURCE_FILES})
#为DemoProject添加需要链接的共享库
target_link_libraries(DemoProject log4cplus boost_system boost_thread libSingleton.so)
同样创建build,进入build执行cmake..和make,至此编译结束。

更复杂的cmake用法参加《cmake实战》,本文仅记录一下最基本的用法。

————————————————
版权声明:转载仅作为笔记使用。 本文为CSDN博主「Summit_Yue」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011197534/java/article/details/78385557

你可能感兴趣的文章
iOS AsynSocket实现即时通讯
查看>>
iOS VFL语言
查看>>
iOS UIPopoverController以及iOS9以后UIPopPresentationController的使用、封装到分类中
查看>>
宏定义
查看>>
OC中字符串的操作
查看>>
ios之NSFileManager文件操作
查看>>
iOS NSThread多线程枷锁
查看>>
ios/OC之调用系统相机录像、拍照、打开相册
查看>>
iOS中需要重新布局的几中情况调用的方法
查看>>
iOS. NSCache的缓存
查看>>
iOS之属性引用self.xx与_xx的区别
查看>>
iOS 项目的基本配置bundleId/版本命名/....
查看>>
iOS之CoreImage图像处理框架
查看>>
iOS tableview中cell设置的注意事项
查看>>
iOS之文本处框架CoreText(C语言的框架)
查看>>
iOS之文本处理框架TextKit介绍/NSMutableString
查看>>
iOS. Instruments的使用
查看>>
iOS中显示GIF动画
查看>>
iOS CALayer的transform属性(QuartzCore框架)和view的transform属性(CoreGraphics框架)
查看>>
iOS 网络请求判断连接和状态码
查看>>