1.主要命令

  • project (TEST):指定项目名称为TEST
  • aux_source_directory(<dir> <variable>):将当前目录中的源文件名称赋值给变量 DIR_SRCS
  • include_directories:指定头文件的搜索路径,相当于指定gcc的-I参数
  • link_directories:动态链接库或静态链接库的搜索路径,相当于gcc的-L参数
  • add_executable:编译可执行程序
  • target_link_libraries:添加链接库,相同于指定-l参数

2.模板

我们以调用superlu为例进行说明,首先在当前测试目录下建立四个文件夹:include,src,lib,build。其中include放superlu所依赖的.h文件,src放自己编写的文件,lib放superlu的库文件,build目前是一个空文件夹,文件夹结构如下图所示:



将以下内容考入文件CMakeList.txt中,

  1. cmake_minimum_required (VERSION 2.6)
  2. project (TEST)
  3. set (TEST_VERSION 0.1)
  4. set(CMAKE_BUILD_TYPE "Debug")
  5. set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb -DDEBUG")
  6. set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
  7. set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../bin)
  8. aux_source_directory(${PROJECT_SOURCE_DIR}/src DIR_SRC)
  9. include_directories(${PROJECT_SOURCE_DIR}/src)
  10. include_directories(${PROJECT_SOURCE_DIR}/include)
  11. link_directories(${PROJECT_SOURCE_DIR}/lib)
  12. add_executable(main ${DIR_SRC})
  13. target_link_libraries(main libsuperlu.a)
  14. target_link_libraries(main libblas.a)

然后进入目录build下,执行

  1. cmake ..
  2. make

执行文件便会自动创建在目录bin下面,下图为执行完后的结构



cmake模板的更多相关文章

  1. 【转载】CMake 简介和 CMake 模板

    转载自我的博客: CMake 简介和 CMake 模板 . 如果你用 Linux 操作系统,使用 cmake 会简单很多,可以参考一个很好的教程: CMake 入门实战 | HaHack .如果你用 ...

  2. 【转载】cmake编写

    Cmake的输入是在源码目录下的CMakeLists.txt文件.这个文件可以用include或者 add_subdirectory 命令增加入其它的输入文件. 语法 CMakeList.txt文件是 ...

  3. Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总

    原文档地址:https://cookiecutter.readthedocs.io/en/latest/ 本系列只介绍cookiecutter的基础使用,而且会删除与功能使用无关的部分.深度使用及了解 ...

  4. cmake介绍

    1. cmake介绍 1.1 cmake用途 CMake的用途是能通过一系列的源码和相关的配置来生成需要的编译器平台上的项目文件.譬如,如果一个项目需要在Windows上用VS编译,在Linux上用m ...

  5. cmake处理多源文件目录

    cmake处理多源文件目录 假设我们的源文件全部在src中,则我们需要在子文件src中建立文件CmakeLists.txt,内容如下: AUX_SOURCE_DIRECTORY(. DIR_TEST_ ...

  6. plain framework 商业版 开发总结2 项目管理器

    任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的 ...

  7. OpenGL模板 Mac Cmake OpenGL(Glut) Template

    自己经常使用的一些功能做一个模板,有灯光效果,你可以用鼠标放大,围绕所述旋转坐标系的原点 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHlhbmcxOT ...

  8. 通过例子进阶学习C++(七)CMake项目通过模板库实现约瑟夫环

    本文是通过例子学习C++的第七篇,通过这个例子可以快速入门c++相关的语法. 1.问题描述 回顾一下约瑟夫环问题:n 个人围坐在一个圆桌周围,现在从第 s 个人开始报数,数到第 m 个人,让他出局:然 ...

  9. Say bye to CMake and Makefile

    用了几年的CMake,最近想试着琢磨如何将C++应用的动态链接全部改成静态链接,发现还需要研究CMake的用法,进入CMake的文档, http://www.cmake.org/cmake/help/ ...

随机推荐

  1. [tyvj 1061] Mobile Service (线性dp 滚动数组)

    3月15日第一题! 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须 ...

  2. jenkins 自动化部署

    Execute shell Command BUILD_ID=DONTKILLMEif [ ! -d "/usr/jenkins/$JOB_NAME" ]; then mkdir ...

  3. Mongodb学习总结(1)——常用NoSql数据库比较

    虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQ ...

  4. Jdk和Cglib 的区别

    一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的代理类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...

  5. 【explain】MySQL联表查询中的驱动表

    写在前面 1.不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程 2.不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小 3 ...

  6. web.xml 中context-param元素

    context-param元素含有一对参数名和参数值,用作应用的ServletContext上下文初始化参数.参数名在整个Web应用中必须是惟一的 param-name 子元素包含有参数名,而para ...

  7. cogs 106. [NOIP2003] 加分二叉树(区间DP)

    106. [NOIP2003] 加分二叉树 ★☆   输入文件:jfecs.in   输出文件:jfecs.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 设 一个 n ...

  8. HDU 2371

    知道了怎么置换之后,就可以用矩阵来置换了,但这道题一直关于置换的地方读不明白. #include <iostream> #include <cstdio> #include & ...

  9. 《UML精粹》第三章 -类图的基本概念

    第三章 类图:基本概念 类图可用来描写叙述系统中各种对象的类型.也可描绘出对象间各种各样的静态关系.此外.类图中也能够秀出类的性质(property)与操作(operation),以及可应用到对象间连 ...

  10. Android Otto调研

    这两天对Otto进行了一个简单的调研,发现官网特别简单差点儿没东西,github上给的sample也不是非常好.网上的技术博客也差点儿千篇一律,我就把自己的心得体会写下来吧,如有缘者看见望其少走弯路. ...