cmake基本用法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMake是一个跨平台的自动化构建工具,可以用于生成各种不同类型的构建文件,包括Makefile、Visual Studio解决方案、Xcode项目等。下面是CMake的使用方法详解: 1. 安装CMake 首先需要在官网上下载并安装CMake软件。安装完成后,可以在命令行中输入cmake --version来确认是否安装成功。 2. 创建一个CMakeLists.txt文件 在项目根目录下创建一个名为CMakeLists.txt的文件,该文件是CMake的核心配置文件,定义了项目的构建规则。可以使用文本编辑器或者IDE来创建这个文件。 3. 设置项目信息 在CMakeLists.txt文件中,需要设置项目的基本信息,包括项目名称、版本号、语言等。这可以通过使用project命令来实现。例如: ``` project(MyProject VERSION 1.0 LANGUAGES CXX) ``` 这里设置了项目名称为MyProject,版本号为1.0,使用C++作为编程语言。 4. 定义源文件 在CMakeLists.txt文件中,需要定义项目的源文件。可以使用add_executable或add_library命令来添加源文件。例如: ``` add_executable(myapp main.cpp) ``` 这里添加了一个名为myapp的可执行文件,它的源文件是main.cpp。 5. 添加依赖库 如果项目依赖于其他库,需要使用find_package或者add_subdirectory命令来添加依赖库。例如: ``` find_package(Boost REQUIRED COMPONENTS filesystem system) include_directories(${Boost_INCLUDE_DIRS}) target_link_libraries(myapp ${Boost_LIBRARIES}) ``` 这里添加了一个名为Boost的库,它的组件是filesystem和system。 6. 设置编译选项 在CMakeLists.txt文件中还可以设置编译选项,例如编译标志、链接标志等。可以使用target_compile_options和target_link_libraries命令来设置编译选项。例如: ``` target_compile_options(myapp PRIVATE -Wall -Wextra) target_link_libraries(myapp pthread) ``` 这里设置了编译标记为-Wall和-Wextra,链接标记为pthread。 7. 构建项目 完成以上步骤后,就可以使用cmake命令来生成构建文件,例如: ``` mkdir build cd build cmake .. ``` 这里在项目根目录下创建了一个build目录,并在其中使用cmake命令生成Makefile文件。 最后,使用make命令来编译和构建项目。例如: ``` make ``` 这里编译和构建了项目,并生成myapp可执行文件。 以上就是CMake的使用方法详解。通过CMake,可以方便地管理项目的构建过程,实现跨平台的构建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值