CMake学习,由简入深,持续更新。

参考博文

闹心的CMakeList!!

1. 最简CMakeList编写

文件夹中只有
000
CMakeList.txt:

# cmake 的最小版本要求
cmake_minimum_required(VERSION 3.12)

# 这个CMakeLists管理的工程名称
project(cmakeTest)

#生成可执行程序 语法:add_executable(可执行程序名 要编译的cpp)
add_executable(cmakeTest main.cpp )

main.cpp

#include "iostream"

int main() {
    std::cout << "hello cmake!" << std::endl;
    return 0;
}

结果:

E:\self_study\git\cmake_demo\cmake-build-debug\cmakeTest.exe
hello cmake!
Process finished with exit code -1073741819 (0xC0000005)

2. Include相关

为了标准,在目录中添加文件夹include,用来存放头文件。
001

CMakeList.txt:
增加INCLUDE_DIRECTORIES用来设定头文件目录

# cmake 的最小版本要求
cmake_minimum_required(VERSION 3.12)

# 这个CMakeLists管理的工程名称
project(cmakeTest)

#设定头文件目录,主程序中的#include的.h文件坐在的目录
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include)

#生成可执行程序 语法:add_executable(可执行程序名 要编译的cpp)
add_executable(cmakeTest main.cpp )

.hpp:写一个测试函数

#include "iostream"
#include "string"


class Solution {
public:
    std::string reverseWords(std::string s) {
        std::cout << s << std::endl;
    }
};

main.cpp调用一下

#include "iostream"
#include "q0151_reverseWords.hpp"


int main() {
    std::cout << "hello cmake!" << std::endl;
    Solution solution;
    solution.reverseWords("test ok!");
    return 0;
}

结果:

E:\self_study\git\cmake_demo\cmake-build-debug\cmakeTest.exe
hello cmake!
test ok!

Process finished with exit code -1073741819 (0xC0000005)

其中一般来说,.h里面只有声明,没有实现,而.hpp里声明实现都有,后者可以减少.cpp的数量。

3. c++版本

CMakeList.txt:添加一句set(CMAKE_CXX_STANDARD 11),这个数字随版本号变化。

# cmake 的最小版本要求
cmake_minimum_required(VERSION 3.12)

# 这个CMakeLists管理的工程名称
project(cmakeTest)

# 设置C++标准为 C++ 11
set(CMAKE_CXX_STANDARD 11)

#设定头文件目录,主程序中的#include的.h文件坐在的目录
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include)

#生成可执行程序 语法:add_executable(可执行程序名 要编译的cpp)
add_executable(cmakeTest main.cpp )

为什么要指定版本?举个栗子:
我现在要用vector做事情,c++11支持如下这种赋值。

    std::vector<int> a;
    a = {1,2};

如果我的CMakeList.txt 缺少set(CMAKE_CXX_STANDARD 11),这里会报错(形式多种多样,这里不作展示),从而我只能这样写:

    std::vector<int> a;
    a.push_back(1);
    a.push_back(2);

想象一下如果数组有很长。。。。。。(学前我TM就这么push了好多)
所以c++版本很重要

ps: git 相关

.gitignore文件编写

在这里插入图片描述
此文件为git忽略的文件列表,一般放置(数据集,编译文件等)
我的.gitignore

# "文件夹名"+"/"
cmake-build-debug/
.idea/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值