windows 配置 Cmake

linux 配置 Cmake

cmake 工作原理

+ cmake工作原理

cmake 构建项目

+ cmake构建项目
cmake构建项目
cmake生成nmake构建项目
# cmake .: 在当前目录构建, cmake -S . -B build 的简写形式
# cmake ..: 在上一层目录构建,cmake -S . -B build 的简写形式  
# 配置阶段,生成构建系统
# -S .: 指定源代码目录为当前目录.
# -B build: 指定构建输出目录为 build.
cmake -S . -B build
# 构建阶段,编译项目
cmake --build build
# 在 Windows 上用 NMake 构建你的 CMake 项目
# -S .: 指定源代码目录为当前目录.
# -B n: 指定构建输出目录为 n.
# -G "NMake Makefiles": 使用 NMake 生成 Makefile.
cmake -S . -B build -G "NMake Makefiles"
cd build
nmake

windows 环境中 cmake 编译链接静态库

+ windows环境cmake编译链接静态库
  1. 生成静态库
目录结构
CMakeLists.txt
xlog.h
xlog.cpp
cmake_minimum_required(VERSION 3.20)
project(xlog)
add_library(xlog STATIC xlog.h xlog.cpp) 
#ifndef XLOG_H
#define XLOG_H

class __declspec(dllexport) XLog
{
public:
    XLog();
};

#endif //LOG_H
#include "xlog.h"
#include <iostream>
using namespace std;

XLog::XLog()
{
    cout<<"Create XLog"<<endl;
}
2. 链接静态库
目录结构
CMakeLists.txt
test_xlog.cpp
cmake_minimum_required(VERSION 3.20)
project(test_xlog)
# 头文件路径
include_directories("xlog")
# 指定库查找路径,即 lib(静态库) 文件所在路径.
link_directories("../xlog/build")
add_executable(test_xlog test_xlog/test_xlog.cpp xlog)
# 指定加载的库
target_link_libraries(test_xlog xlog)
#include <iostream>
#include "xlog.h"
using namespace std;
int main() 
{
    XLog log;
    cout << "test xlog" << endl;
    return 0;
}

windows 环境中 cmake 编译链接动态库

+ windows环境cmake编译链接动态库
目录结构
CMakeLists.txt
xlog.h
xlog.cpp
test_xlog.cpp
cmake_minimum_required(VERSION 3.20)
project(test2)
# 头文件路径
include_directories("xlog")
# 添加库编译
add_library(xlog SHARED xlog/xlog.cpp)
add_executable(test_xlog test_xlog/test_xlog.cpp xlog)
target_link_libraries(test_xlog xlog)
#ifndef XLOG_H
#define XLOG_H

class __declspec(dllexport) XLog
{
public:
    XLog();
};

#endif //LOG_H
#include "xlog.h"
#include <iostream>
using namespace std;

XLog::XLog()
{
    cout<<"Create XLog"<<endl;
}
#include <iostream>
#include "xlog.h"
using namespace std;
int main()
{
    XLog log;
    cout << "test xlog" << endl;
    return 0;
}

cmake 变量

+ cmake变量
cmake变量
# 在构建过程中输出每个编译命令和链接命令的详细信息. 
set(CMAKE_VERBOSE_MAKEFILE ON)
# 打印CMakeLists.txt路径.
message("CMAKE_CURRENT_LIST_DIR=${CMAKE_CURRENT_LIST_DIR}")

cmake 指令

+ cmake指令
cmake指令
# 指定头文件查找路径.
include_directories(头文件路径)
# 指定库查找路径.
link_directories(静态库路径)
# 构建一个可执行文件,并指定其名称和源文件.
add_executable(可执行文件 源文件)
# 将库链接到可执行文件.
target_link_libraries(可执行文件 静态库)
# 将一个子目录添加到构建过程中.
add_subdirectory(目标文件夹)

参考链接

  1. Centos 源码安装 cmake
  2. Centos 源码安装 cmake
  3. Cmake 官方教程
  4. Cmake 官方实例