实例分享cmake编译一个简单c++项目(demo)

下面通过一个小例子来说明cmake编译一个c++项目,生成可执行文件:

整理目录结构:

CMake Lists.txt addlib build main.cpp

电脑上没有tree命令,也不大敢截图,将就着看看,其中build是cmake编译指定的路径,addlib下面也有一个头文件和源文件  ,还有一个CmakeLists.txt,可以看下:

CMake Lists.txt library.cpp library.h

先看各个文件的代码:

addlib/library.h:

#ifndef CPPPROJECT_LIBRARY_H
#define CPPPROJECT_LIBRARY_H

int acc_add(int);

#endif

addlib/library.cpp:

#include "library.h"
#include <iostream>

void hello(){
  std::cout<<"hello world"<<std::endl;
}

int acc_add(int n){
  int sum=0;
  for(int i=0;i<n;i++){
    sum+=i;
  }
  return sum;
}

addlib/CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(accliblibrary)

set(CMAKE_CXX_STANDARD 11)

add_library(accliblibrary SHARED library.cpp library.h) # 诉生成一个库文件。

main.cpp:

#include <iostream>
#include <string>
#include "addlib/library.h"
using namespace std;
int main(){
 int n=10;
 int ans=acc_add(n);
 cout<<"1+....+"<<n<<"="<<ans<<endl;
  return 0;
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(cppproject)

set(CMAKE_CXX_STANDARD 11)

add_subdirectory(acclib)

add_executable(cppproject main.cpp) #生成一个可执行的文件

target_link_libraries(cppproject accliblibrary)

下面就是编译该项目,生成可执行文件:

cd build/

cmake ..

-- The C compiler identification is AppleClang 8.0.0.8000042
-- The CXX compiler identification is AppleClang 8.0.0.8000042
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/zhoumeixu/Documents/cmakedemo/build

make:

Scanning dependencies of target addliblibrary
[ 25%] Building CXX object addlib/CMakeFiles/addliblibrary.dir/library.cpp.o
[ 50%] Linking CXX shared library libaddliblibrary.dylib
[ 50%] Built target addliblibrary
Scanning dependencies of target cmakedemo
[ 75%] Building CXX object CMakeFiles/cmakedemo.dir/main.cpp.o
[100%] Linking CXX executable cmakedemo
[100%] Built target cmakedemo

./cmakedemo

1+....+10=45

这篇文章就介绍下面,下面我们小编将继续为大家介绍

(0)

相关推荐

  • VS2019中CMake项目的简单使用方法

    在使用Visual Studio的时候很多人都应该碰过在使用scanf的时候会报错等问题,虽然把SDL检查关了就能解决,但是此方法在博主使用VS2019的时候,却有失灵的时候.所以决定在日常刷题的时候使用CMake项目来编译代码.因为CMake项目并不会因为使用scanf而报错.以下是博主使用CMake的一些总结,仅供参考. 1.建立CMake项目文件 在创建项目界面可直接搜索cmake找到创建项目. 为了方便使用可以选择将解决方案和项目放到同一个目录. 2.CMakeList的配置 在创建好项

  • win10下VSCode+CMake+Clang+GCC环境搭建教程图解

    打算用C/C++把基本的数据结构与算法实现一遍, 为考研做准备, 因为只是想实现算法和数据结构, 就不太想用VisualStudio, 感觉VSCode不错, 遂在网上找了一些教程, 结合自己的需求, 配置一下开发环境. 安装软件 CMake CMake是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程; 官网下载安装, 傻瓜式操作; 记得把安装目录下的bin文件添加到系统环境变量, 这个可以在安装的时候勾选, 勾选了就不用自己添加了; 检测是否安装

  • C/C++从零开始的cmake教程

    C/C++从零开始的CMake教程 如果你有过在linux系统上源码安装某款软件的经历,那么肯定对这三部曲一点都不会陌生--配置(configure).编译(make).安装(make install).几乎每次都是机器人般的操作,这背后其实是make(准确地说应该是GNU Make)在默默为你干了不少活. 1.编译hello.c--单一源文件的编译 //hello.c #include <stdio.h> int main(){ puts("hello, world!")

  • 超详细的cmake入门教程

    什么是cmake 你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MSnmake,BSD Make(pmake),Makepp,等等.这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别.这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译.而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作. CMake CMake附图 1 CMake就是针对上

  • cmake 学习笔记

    最近接触到一些工程上的代码,都是用cmake来编译的,每次看着CMakeLists.txt 就各种懵逼,决定从0 开始学习 1 set set(var hello) message(${var}) 输出 hello 其实并不是单单输出hello,还有很多其他信息,会生成很多文件 files 2 CMAKE_C(XX)_FLAGS 变量 CMAKE_C_FLAGS 存放的内容会被传给 C 编译器,作用在所有的编译组态上.如果希望只针对特定一种组态有效,可以设定 CMAKE_C_FLAGS_<编译组

  • VS2019中CMake项目如何指定c++语言标准

    VS2019中CMake项目怎么指定语言标准 博主前几天在使用c++17新特性结构绑定时报错了,代码如下: #include<bits/stdc++.h> using namespace std; int main() { unordered_map<int, int> mmid; for (auto [a, b] : mmid) { cout << a << ' ' << b << endl; } return 0; } 后来查了一

  • 实例分享cmake编译一个简单c++项目(demo)

    下面通过一个小例子来说明cmake编译一个c++项目,生成可执行文件: 整理目录结构: CMake Lists.txt addlib build main.cpp 电脑上没有tree命令,也不大敢截图,将就着看看,其中build是cmake编译指定的路径,addlib下面也有一个头文件和源文件  ,还有一个CmakeLists.txt,可以看下: CMake Lists.txt library.cpp library.h 先看各个文件的代码: addlib/library.h: #ifndef

  • MyBatis入门实例教程之创建一个简单的程序

    准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8 新建表: USE mybatisdemo CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL, uage INT NOT NULL ); INSERT INTO users(uid,

  • 基于JS实现一个简单的投票demo

    目录 演示 说明 源码 body设置 js实现投票的动画 css设定 演示 说明 今天没有什么好的内容分享,跟大家讲一个标签吧增长姿势. line-height CSS 属性用于设置多行元素的空间量,如多行文本的间距. 根据浏览器的解析不同,line-height的表现方式有两种 1.基线之间的距离为line-height 2.lineHeight 为,font-size的上下加上半行距 它的取值为: 1·normal: 默认.设置合理的行间距.取决于用户端.桌面浏览器(包括Firefox)使用

  • MyBatis Plus构建一个简单的项目的实现

    开始吧 1.首先准备一张表"users"表. 2.创建一个springboot工程,"可以使用 Spring Initializer 快速初始化一个 Spring Boot 工程",具体工程的创建这里就不说了.大家都懂的. 3.添加相关依赖,如下: <!-- 数据库依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-

  • 使用Python实现一个简单的项目监控

    在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互.随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行的接口就各种出错了. 这个接口系统刚刚开发不久,整个系统中,处于比较边缘的位置,不像其他项目,有日志库,还有短信告警,一旦出问题,很多情况下都是用户反馈回来,所以,我的想法是,拿起python,为这个项目写一个监控.如果在调用某个第三方接口的过程中,大量出错了,说明这个接口有有问题了,就可以更快的采

  • Swift实现简单计算器项目

    本文实例为大家分享了Swift实现简单计算器项目的具体代码,供大家参考,具体内容如下 // //  ViewController.swift //  计算器 // //  Created by 悦兑科技 on 15/1/14. //  Copyright (c) 2015年 BSY. All rights reserved. // import UIKit class ViewController: UIViewController {     var numOne = UITextField(

  • 一个简单的JavaScript Map实例(分享)

    用js写了一个Map,带遍历功能,请大家点评下啦. //map.js Array.prototype.remove = function(s) { for (var i = 0; i < this.length; i++) { if (s == this[i]) this.splice(i, 1); } } /** * Simple Map * * * var m = new Map(); * m.put('key','value'); * ... * var s = ""; *

  • 使用JSP制作一个超简单的网页计算器的实例分享

    实现一个简单的计算器程序,要求:使用jsp+javabean模式实现. 项目源代码如下: 文件:calculator.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ page isErrorPage="true"%> <%@ page errorPage="calculator.jsp" %> <%@ taglib uri

  • Java Servlet简单实例分享(文件上传下载demo)

    项目结构 src com servletdemo DownloadServlet.java ShowServlet.java UploadServlet.java WebContent jsp servlet download.html fileupload.jsp input.jsp WEB-INF lib commons-fileupload-1.3.1.jar commons-io-2.4.jar 1.简单实例 ShowServlet.java package com.servletdem

  • 用Eclipse 创建一个简单的web项目(图文教程)

    Eclipse neon 汉化版 ; 1.右击新建 --> 选择 动态Web项目 2. 填写 项目名 项目位置 ; 选择 Dynamic web module version 和 tomcat version ; 点击完成 即可创建 项目; 2.1:项目名称: 2.2:项目位置: 2.3: Dynamic Web Module Version 和 Tomacat Version 之间有版本上的匹配关系: 匹配关系如下图 3. 创建成功后的项目结构: 4. 在创建好项目结构之后 先查看一下 项目的

随机推荐