例子2:有目录的项目

我现在有个文件夹ProjectDate,有如下文件结构

E:.
│  CMakeLists.txt

├─include
│      Date.h

└─src
        date.cpp
        main.cpp

include文件夹下是头文件Date.h

#ifndef DATE_H
#define DATE_H
 
class Date
{
private:
    int m_year;
    int m_month;
    int m_day;
public:
    Date(int year, int month, int day);
    void SetDate(int year, int month, int day);
    int getYear() { return m_year; }
    int getMonth() { return m_month; }
    int getDay()  { return m_day; }
};
#endif

src文件夹下面是源文件Date.cpp和main.cpp

// Date.cpp
#include "Date.h"
 
// Date constructor
Date::Date(int year, int month, int day)
{
    SetDate(year, month, day);
}
 
// Date member function
void Date::SetDate(int year, int month, int day)
{
    m_month = month;
    m_day = day;
    m_year = year;
}

 

// Main.cpp
#include <iostream>
#include "date.h"

int main()
{
    Date date(2016,05,05);
    std::cout<<"Year:"<<date.getYear()<<" Month:"<<date.getMonth()
    <<" day:"<<date.getDay()<<std::endl;
}

 

CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.5.2)
project(directory_test)
 
#Bring the headers, such as Date.h into the project
include_directories(include)
 
#Can manually add the sources using the set command as follows:
#set(SOURCES src/mainapp.cpp src/Date.cpp)
 
#However, the file(GLOB...) allows for wildcard additions:
file(GLOB SOURCES "src/*.cpp")
 
add_executable(testDate ${SOURCES})

 

  • 第一行已经介绍过,设置CMake最低版本
  • 第二行project命令设置项目名称
  • include_directories() 命令加入头文件所在文件夹
  • set(SOURCES … )可以加入文件到SOURCES变量中,但是你需要一个文件一个文件的单独加入,使用范围比较小,所以被注释掉了
  • 经常使用的是file()命令来把文件加入到项目中。GLOB表示要将后面表达式"src/*.cpp"表示的所有文件加入到SOURCES变量中
  • add_executable使用SOURCES变量生成testDate可执行文件

PROJECT指令的语法是:

PROJECT(projectname [CXX] [C] [Java])
用于定义工程名称,并可指定工程支持的语言,默认表示支持所有语言。

 

这次我们使用cmake命令行,依然建立build文件夹,进入build。首先运行cmake --help看看都有哪些参量可以使用。

 

 

> cmake --help                                                          
Usage                                                                   
                                                                        
  cmake [options] <path-to-source>                                      
  cmake [options] <path-to-existing-build>                              
                                                                        
Specify a source directory to (re-)generate a build system for it in the
current working directory.  Specify an existing build directory to      
re-generate its build system.                                           
                                                                        
Options                                                                 
  -C <initial-cache>           = Pre-load a script to populate the cache.
  -D <var>[:<type>]=<value>    = Create a cmake cache entry.            
  -U <globbing_expr>           = Remove matching entries from CMake cache
  -G <generator-name>          = Specify a build system generator.      
  -T <toolset-name>            = Specify toolset name if supported by   
                                 generator.                             
  -A <platform-name>           = Specify platform name if supported by  
                                 generator.                             
  -Wdev                        = Enable developer warnings.             
  -Wno-dev                     = Suppress developer warnings.           
  -Werror=dev                  = Make developer warnings errors.        
  -Wno-error=dev               = Make developer warnings not errors.    
  -Wdeprecated                 = Enable deprecation warnings.           
  -Wno-deprecated              = Suppress deprecation warnings.         
  -Werror=deprecated           = Make deprecated macro and function warni
                                 errors.                                
  -Wno-error=deprecated        = Make deprecated macro and function warni
                                 not errors.                            
  -E                           = CMake command mode.                    
  -L[A][H]                     = List non-advanced cached variables.    
  --build <dir>                = Build a CMake-generated project binary t
  -N                           = View mode only.                        
  -P <file>                    = Process script mode.                   
  --find-package               = Run in pkg-config like mode.           
  --graphviz=[file]            = Generate graphviz of dependencies, see 
                                 CMakeGraphVizOptions.cmake for more.   
  --system-information [file]  = Dump information about this system.    
  --debug-trycompile           = Do not delete the try_compile build tree
                                 Only useful on one try_compile at a time
  --debug-output               = Put cmake in a debug mode.             
  --trace                      = Put cmake in trace mode.               
  --trace-expand               = Put cmake in trace mode with variable  
                                 expansion.                             
  --warn-uninitialized         = Warn about uninitialized values.       
  --warn-unused-vars           = Warn about unused variables.           
  --no-warn-unused-cli         = Don't warn about command line options. 
  --check-system-vars          = Find problems with variable usage in sys
                                 files.                                 
  --help,-help,-usage,-h,-H,/? = Print usage information and exit.      
  --version,-version,/V [<f>]  = Print version number and exit.         
  --help-full [<f>]            = Print all help manuals and exit.       
  --help-manual <man> [<f>]    = Print one help manual and exit.        
  --help-manual-list [<f>]     = List help manuals available and exit.  
  --help-command <cmd> [<f>]   = Print help for one command and exit.   
  --help-command-list [<f>]    = List commands with help available and ex
  --help-commands [<f>]        = Print cmake-commands manual and exit.  
  --help-module <mod> [<f>]    = Print help for one module and exit.    
  --help-module-list [<f>]     = List modules with help available and exi
  --help-modules [<f>]         = Print cmake-modules manual and exit.   
  --help-policy <cmp> [<f>]    = Print help for one policy and exit.    
  --help-policy-list [<f>]     = List policies with help available and ex
  --help-policies [<f>]        = Print cmake-policies manual and exit.  
  --help-property <prop> [<f>] = Print help for one property and exit.  
  --help-property-list [<f>]   = List properties with help available and
                                 exit.                                  
  --help-properties [<f>]      = Print cmake-properties manual and exit.
  --help-variable var [<f>]    = Print help for one variable and exit.  
  --help-variable-list [<f>]   = List variables with help available and e
  --help-variables [<f>]       = Print cmake-variables manual and exit. 
                                                                        
Generators                                                              
                                                                        
The following generators are available on this platform:                
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project fil
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project fil
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project fil
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project fil
                                 Optional [arch] can be "Win64" or "IA64"
  Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project fil
                                 Optional [arch] can be "Win64" or "IA64"
  Visual Studio 8 2005 [arch]  = Generates Visual Studio 2005 project fil
                                 Optional [arch] can be "Win64".        
  Visual Studio 7 .NET 2003    = Generates Visual Studio .NET 2003 projec
                                 files.                                 
  Visual Studio 7              = Deprecated.  Generates Visual Studio .NE
                                 2002 project files.                    
  Visual Studio 6              = Deprecated.  Generates Visual Studio 6 
                                 project files.                         
  Borland Makefiles            = Generates Borland makefiles.           
  NMake Makefiles              = Generates NMake makefiles.             
  NMake Makefiles JOM          = Generates JOM makefiles.               
  Green Hills MULTI            = Generates Green Hills MULTI files      
                                 (experimental, work-in-progress).      
  MSYS Makefiles               = Generates MSYS makefiles.              
  MinGW Makefiles              = Generates a make file for use with     
                                 mingw32-make.                          
  Unix Makefiles               = Generates standard UNIX makefiles.     
  Ninja                        = Generates build.ninja files.           
  Watcom WMake                 = Generates Watcom WMake makefiles.      
  CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.    
  CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.    
  CodeBlocks - Ninja           = Generates CodeBlocks project files.    
  CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.    
  CodeLite - MinGW Makefiles   = Generates CodeLite project files.      
  CodeLite - NMake Makefiles   = Generates CodeLite project files.      
  CodeLite - Ninja             = Generates CodeLite project files.      
  CodeLite - Unix Makefiles    = Generates CodeLite project files.      
  Eclipse CDT4 - MinGW Makefiles                                        
                               = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - NMake Makefiles                                        
                               = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
  Kate - MinGW Makefiles       = Generates Kate project files.          
  Kate - NMake Makefiles       = Generates Kate project files.          
  Kate - Ninja                 = Generates Kate project files.          
  Kate - Unix Makefiles        = Generates Kate project files.          
  Sublime Text 2 - MinGW Makefiles                                      
                               = Generates Sublime Text 2 project files.
  Sublime Text 2 - NMake Makefiles                                      
                               = Generates Sublime Text 2 project files.
  Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
  Sublime Text 2 - Unix Makefiles                                       
                               = Generates Sublime Text 2 project files. 
                                                                       

我们想生成Visual Studio 14 2015 Win64项目文件,所以运行

cmake -G "Visual Studio 14 2015 Win64" ..

> cmake -G "Visual Studio 14 2015 Win64" ..
-- The C compiler identification is MSVC 19.0.23918.0
-- The CXX compiler identification is MSVC 19.0.23918.0
-- Check for working C compiler using: Visual Studio 14 2015 Win64
-- Check for working C compiler using: Visual Studio 14 2015 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015 Win64
-- Check for working CXX compiler using: Visual Studio 14 2015 Win64 -- 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: E:/Playground/CMakeExamples/ProjectDate/build

 

msbuild testDate.vcxproj

编译通过,运行

> Debug\testDate.exe
Year:2016 Month:5 day:5

windows下CMake使用图文手册 Part 2的更多相关文章

  1. windows下CMake使用图文手册 Part 3

    例子3: 构建动态库(.dll) 静态库(.lib) 采用和例子2一样的文件,但删除了main.cpp E:.               │  CMakeLists.txt │            ...

  2. windows下CMake使用图文手册 Part 1

    维基百科介绍“CMake是个开源的跨平台自动化建构系统,它用配置文件控制建构过程(build process)的方式和Unix的Make相似,只是CMake的配置文件取名为CMakeLists.txt ...

  3. windows下CMake使用图文手册 Part 4

    例子4:链接静态库(.lib) 例子3里面我们构建了date.lib, 这个例子里我们调用这个库. 前提: date.h的头文件在 E:\Playground\CMakeExamples\DateLi ...

  4. Windows下CMake编译安装OpenCV

    Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...

  5. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  6. [转]在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  7. windows下安装Mysql—图文详解

    mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压 ...

  8. windows下安装Mysql(图文详解)

      博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理 mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com ...

  9. Windows下C++/Fortran调用.exe可执行文件

    目录 软件环境 Windows下CMake编译配置 设置项目的generator Command Line CMake GUI PreLoad.cmake 设置make 示例程序 CMake 设置Fo ...

随机推荐

  1. mybatis调用视图和存储过程

    现在的项目是以Mybatis作为O/R映射框架,确实好用,也非常方便项目的开发.MyBatis支持普通sql的查询.视图的查询.存储过程调用,是一种非常优秀的持久层框架.它可利用简单的XML或注解用语 ...

  2. 矩阵分解ALS方法

    目标函数 优化目标函数 利用坐标下降法,依次更新u和v的值.u和v的先后顺序无所谓,只要保证两者是交替更新的就好.这种方法又称为alternating least squares(ALS). 增加偏置 ...

  3. 八皇后—Java

    package queen; public class queen { static boolean col[] = new boolean[8]; static boolean main_diago ...

  4. 9本java程序员必读的书(附下载地址)

    本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还 ...

  5. UVA 10474

    题意:给你一组数,再给几个数问是否在一组数中. 题很简单:STL入门. 没用到STL. #include<iostream> #include<cstdio> #include ...

  6. java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决

    在J2EE框架下开发web网站,这种问题经常遇到,只要我们网上搜一下,就可以看到很多版本的,我整理一下: 第一种可能性解决:看看我的项目:主要 是里面的Structs 1.3 (structs 2)和 ...

  7. 威纶触摸屏和三菱PLC3S之间的通信设置

    触摸屏软件中: PLC型号:FX3U\FX3G 接口类型:RS-485 4W 端口:COM2(19200,E,7,1)

  8. MyFirstgame 拼图

    package auto; /** * IDA*求解15puzzle问题 * IDA*整合了IDDFS和A*算法.其中IDDFS控制了求解过程中的内存开销,A*算法意味着"启发式" ...

  9. nginx入门篇----安装、部署、升级

    1.安装前准备工作下载nginx安装包依赖包:gcc pcre pcre-level  zlib zlib-devel openssl openss-level在线依赖包安装命令:yum -y ins ...

  10. DBA-mysql-表

    create table  student( id int(4) not null, name char(20) not null, age int(3) not null default '0', ...