本文共 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++11add_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