cmake 及make 实践记录
DEBIAN操作系统
预备操作:
安装 gcc g++ make cmake
开启Terminal
切换到超级用户 下载安装上述软件
A@debian:~$ su
Password: root@debian:/home/A# apt-get install gcc g++ make cmake
Reading package lists... Done
Building dependency tree
Reading state information... Done
make is already the newest version.
gcc is already the newest version.
g++ is already the newest version.
cmake is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
//==========================================================
makefile 内容如下
TARGET= main
CPP_FILES = $(shell ls *.cpp)
BASE = $(basename $(CPP_FILES))
OBJS = $(addsuffix .o, $(addprefix obj/,$(BASE))) $(TARGET):$(OBJS)
-rm -f $@
g++ -o $(TARGET) $(OBJS) obj/%.o:%.cpp
@if test -d"obj";then\
mkdir -p obj;\
fi;\
g++ -c -o $@ $< clean:
-rm -f $(TARGET)
-rm -f obj/*.o
同一目录下有三个文件 main.cpp Test1.cpp Test1.h Test2.cpp Test2.h
最后结果:
# make
rm -f main
g++ -o main obj/main.o obj/Test1.o obj/Test2.o
内容解释参考
http://blog.csdn.net/wcl199274/article/details/39140459
由于网页排版 makefile内容请大家注意重新使用TAB排版 否则可能编译不过
//=============================================================
CMAKE的测试环境如下
一个main.cpp 内容随意 可编译即可
一个CMakeLists.txt
内容如下:
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS})
编译结果如下
cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/A/Desktop/3
make
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
Linking CXX executable main
[100%] Built target main
//===================================================
更进一步的 根目录下 放入main.cpp CMakeLists.txt
在新建一个子目录src 子目录下放置Test1.cpp Test1.h CMakeLists.txt
根目录CMakeLists.txt内容如下:
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
ADD_SUBDIRECTORY( src )
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS} )
TARGET_LINK_LIBRARIES( main Test )
子目录CMakeLists.txt内容如下:
AUX_SOURCE_DIRECTORY(. DIR_TEST1_SRCS)
ADD_LIBRARY ( Test ${DIR_TEST1_SRCS})
编译显示如下:
cmake .
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/A/Desktop/2
make
Scanning dependencies of target Test
[ 50%] Building CXX object src/CMakeFiles/Test.dir/Test1.cpp.o
Linking CXX static library libTest.a
[ 50%] Built target Test
Scanning dependencies of target main
[100%] Building CXX object CMakeFiles/main.dir/main.cpp.o
Linking CXX executable main
[100%] Built target main
内容解释参考
http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/
cmake 及make 实践记录的更多相关文章
- Spring Boot 2 实践记录之 封装依赖及尽可能不创建静态方法以避免在 Service 和 Controller 的单元测试中使用 Powermock
在前面的文章中(Spring Boot 2 实践记录之 Powermock 和 SpringBootTest)提到了使用 Powermock 结合 SpringBootTest.WebMvcTest ...
- Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性
在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性.但那是因为 Spring 提供了将上 ...
- Spring Boot 2 实践记录之 MyBatis 集成的启动时警告信息问题
按笔者 Spring Boot 2 实践记录之 MySQL + MyBatis 配置 中的方式,如果想正确运行,需要在 Mapper 类上添加 @Mapper 注解. 但是加入此注解之后,启动时会出现 ...
- Ionic3项目实践记录
Ionic3首次项目实践记录 标签(空格分隔): Angular Ionic Ionic3踩坑 1. 路由懒加载(lazy load) 如果设置了懒加载,就必须全部懒加载(包括TabsPage),否则 ...
- k8s1.4.3安装实践记录(2)-k8s安装
前面一篇已经安装好了ETCD.docker与flannel(k8s1.4.3安装实践记录(1)),现在可以开始安装k8s了 1.K8S 目前centos yum上的kubernetes还是1.2.0, ...
- ElasticSearch5.0+版本分词热更新实践记录
前言 刚开始接触ElasticSearch的时候,版本才是2.3.4,短短的时间,现在都更新到5.0+版本了.分词和head插件好像用法也不一样了,本博客记录如何配置Elasticsearch的Hea ...
- 9-2、大型项目的接口自动化实践记录----递归判断两个json串是否相等
1.已知json串构成的情况下判断 先构造一下场景,假设已经把各个数据都移除掉不对比的字段 图1 预期.实际结果,复杂接口返回多层嵌套json时,同下 图2 预期.实际结果值为:{child_json ...
- 9-1、大型项目的接口自动化实践记录----数据库结果、JSON对比
上一篇写了如何从DB获取预期.实际结果,这一篇分别对不同情况说下怎么进行对比. PS:这部分在JSON对比中也适用. 1.结果只有一张表,只有一条数据 数据格式:因为返回的是dicts_list的格式 ...
- 8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果
上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比.因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下D ...
随机推荐
- jdbc-DAO的实现
什么是 DAO DAO(Data Access Object)是一个数据访问接口,夹在业务逻辑与数据库资源中间. 在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有 ...
- cratedb 集群搭建说明
此为搭建说明,实际上搭建过es 集群的都是可以的,和es 基本一样 配置文件 crate.yaml 参考集群架构图 集群名称 cluster.name: my_cluster 每个node节点名称 如 ...
- Linux环境kafka安装
一. 安装包下载地址 https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.12-2.0.0.tgz 注:下载kafka时有S ...
- codevs 计算器的改良
#include<iostream> #include<cctype> #include<vector> #include<cstdio> using ...
- Train-Alypay-Cloud:mPaaS 移动开发平台培训(第一次)
ylbtech-Train-Alypay-Cloud:mPaaS 移动开发平台培训(第一次) 1.返回顶部 1. 大家好! 欢迎大家参加蚂蚁金融云 即将在2018年1月17日到1月18日 在北京 环球 ...
- Ubuntu 18.04 gcc降级为4.8.5版本
1. 下载gcc/g++ 4.8 $ sudo apt-get install -y gcc-4.8.5 $ sudo apt-get install -y g++-4.8.5 2. 链接gcc/g ...
- Poly
folly/Poly.h Poly is a class template that makes it relatively easy to define a type-erasing polymor ...
- Sqoop导入关系数据库到Hive
参考:segmentfault.com:Sqoop导入关系数据库到Hive Sqoop 是 apache 下用于 RDBMS 和 HDFS 互相导数据的工具.本文以 mysql 数据库为例,实现关系数 ...
- 如何更改Windows10的计算机基本信息
请问如何去掉红色框内的内容?优化大师更改无效! 最佳答案 打开注册表,定位到如下路径 1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current ...
- leetcode69
public class Solution { public int MySqrt(int x) { long r = x; while (r * r > x) r = (r + x / r) ...