Constructing C++ Projects via CMake on Windows in git bash
1. Installing CMake
2. Building Source Code Files
hello.cc
#include <iostream>
#include "spdlog/spdlog.h"
int main(void)
{
spdlog::info("Welcome to spdlog!");
std::cout << "Hello World!" << std::endl;
return 0;
}
3. Building CMakeLists.txt File
# 指定CMake最低版本
cmake_minimum_required(VERSION 3.10)
# 必须在项目名称前指定C++编译器
set (CMAKE_CXX_COMPILER "g++.exe")
# 指定项目名称和使用的编程语言
project(MyProject LANGUAGES CXX)
# 添加spdlog目录,让spdlog可用
add_subdirectory(third_party/spdlog)
# 指定C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 指定生成的可执行文件及对应的源文件
add_executable(my_app main.cc)
# 使用spdlog头文件模式
target_link_libraries(my_app PRIVATE spdlog::spdlog_header_only)
4. Building Project
# 1. 配置项目(生成 Makefile 或 Ninja 文件)
# -G "MinGW Makefiles" 指定使用MinGW而不是Windows默认的nmake,
# 当然要提前安装MinGW到C:/MinGW安装路径不要有空格否则可能报错
# 且C:/MinGW/bin要放到Windows的环境路径上
# -G Ninja 指定使用Ninja,同样Ninja也需要提前准备好
# -B build -S . 即 -S <path-to-source> -B <path-to-build>
cmake -B build -S . -G "Ninja"
# 2. 编译项目
cmake --build build# 3. 编译项目
time cmake --build build
5. 注意事项
- Windows 不能用MinGW 的g++和cmake来编译spdlog,因为会报线程错误。
- 在Windows上必须使用MSYS2里面的g++工具C:\msys64\ucrt64,否则编译的时候首先会产生线程相关的编译错误。
- 把C:\msys64\ucrt64加到Windows环境Path里面。
6. 项目Tree结构如下
Comments
Post a Comment