#设置库的路径,电脑里有qt4以及qt5,使用qt5时 设置qt5的环境变量(路径)。
 set(CMAKE_PREFIX_PATH $ENV{QTDIR})
#设定工程名称
Project(proname)
#设置CMake最低版本要求
cmake_minimum_required(VERSION 3.6.) #设置需要用到的Qt模块 FIND_PACKAGE(Qt5Core)
#包含qt5core的头文件
include_directories(${Qt5Core_INCLUDE_DIRS}) #设置Boost静态库路径,电脑中有不同版本的boost选择自己需要的
SET(Boost_LIBRARY_DIRS $ENV{BOOST_ROOT16}/lib32-msvc-14.0)
SET(Boost_INCLUDE_DIRS $ENV{BOOST_ROOT16})
SET(Boost_LIBRARIES boost_date_time-vc140-mt-1_62.lib boost_date_time-vc140-mt-gd-1_62.lib)
#设置Qt包含的静态库
link_directories($ENV{QTDIR}\\lib)
set(QT_LIBRARIES Qt5::Core) #一些设置项
set(QT_USE_QTSQL TRUE) #增加宏定义
if(WIN32)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
endif(WIN32) add_definitions(-DPRONAME)
add_definitions(-DQT5) #定义变量
SET(CMAKE_BUILD_TYPE "Debug")
set(LIB_DIR ${PROJECT_SOURCE_DIR}/lib) #定义一些包含路径
SET(ANALYZER_SRC ${PROJECT_SOURCE_DIR}/src) #工具链
if(ARM)
SET(CMAKE_CXX_COMPILER arm-linux-g++)
endif() #添加子目录,进一步Make add_subdirectory(src) #多核编译
if(WIN32)
set_target_properties(proname PROPERTIES COMPILE_FLAGS "/MP")
else(WIN32)
endif(WIN32) src目录下cmakelists.txt

#创建一系列的变量
set(moc_files
1.h
2.h
)

set(header_files
1.h
2.h
)
set(source_files
1.cpp
2.cpp
)

#头文件路径
include_directories(
./
${PROJECT_SOURCE_DIR}
${Boost_INCLUDE_DIRS}
)

#通过include导入子文件
include("${CMAKE_CURRENT_SOURCE_DIR}/book2/CMakeLists.rules")

#moc
QT5_WRAP_CPP(HEADER_MOCS ${moc_files})
SOURCE_GROUP("moc_cxx" FILES ${HEADER_MOCS})

# HOST链接库路径
link_directories(${Boost_LIBRARY_DIRS} )

#最终目标文件
add_definitions ("-D${MYDLL}_LIB")
set(LIBRARY_OUTPUT_PATH ${LIB_DIR})
add_library(${MYDLL} SHARED ${moc_files} ${source_files} ${header_files} ${HEADER_MOCS})
target_link_libraries(${MYDLL} ${MYDLL_LINK_LIST}) # MYDLL_LINK_LIST通过set设置的一些lib
#多核编译
if(WIN32)
set_target_properties(${MYDLl} PROPERTIES COMPILE_FLAGS "/MP") #多核编译
else(WIN32)
endif(WIN32)


cmake 学习-cmakelists.txt的更多相关文章

  1. CMake Intro - CMakeLists.txt

    Notes:  directory structure:  cmake, cmake/Tutorial, cmake/Tutorial/MathLibs 1. File lists in cmake/ ...

  2. Ros学习——Cmakelists.txt文件解读

    1.过程 .Required CMake Version (cmake_minimum_required) //CMake 需要的版本 .Package Name (project()) //#定义工 ...

  3. CMake之CMakeLists.txt编写入门

    自定义变量 主要有隐式定义和显式定义两种. 隐式定义的一个例子是PROJECT指令,它会隐式的定义< projectname >_BINARY_DIR和< projectname & ...

  4. Cmake知识----编写CMakeLists.txt文件编译C/C++程序

    1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...

  5. [CMAKE] 详解CMakeLists.txt文件

    [快速查询]https://cmake.org/cmake/help/v2.8.8/cmake.html#section_Commands 1 CMake简介 CMake是跨平台编译工具,比make更 ...

  6. Cmake知识----编写CMakeLists.txt文件编译C/C++程序(转)

    1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...

  7. CMakeLists.txt使用

    背景:C++代码在编译的过程中需要进行文件的包含,该文主要介绍CMakeLists.txt相关语法 CMake之CMakeLists.txt编写入门

  8. CMake学习笔记四:usb_cam的CMakeLists解析

    最近在学习cmake,在完整看了<cmake实践>一书后,跟着书上例程敲了跑了一遍,也写了几篇相关读书笔记,算是勉强基本入门了.所以找了usb_cam软件包的CMakeLists.txt来 ...

  9. CMAKE 生成VS2008静态库工程 与 CMAKE使用,CMakeLists.txt编写总结

    cmake -G"Visual Studio 9 2008 Win64" 以上命令得用cd命令切换到顶层CMakeLists.txt的当前目录,才能生效 以下是CMakeLists ...

随机推荐

  1. 跟我一起学编程—《Scratch编程》第22课:颠弹力球

    1. 能够熟练绘制角色和背景造型 2. 能够熟练控制角色角度.速度等 3. 能够熟练使用变量 4. 能够熟练使用循环.选择等指令控制程序 任务描述: 1. 绘制弹力小球.托板角色,背景造型. 2. 游 ...

  2. Android 自定义控件之 日期选择控件

    效果如下: 调用的代码: @OnClick(R.id.btn0) public void btn0() { final AlertDialog dialog = new AlertDialog.Bui ...

  3. Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.

    django 报错 django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fiel ...

  4. c++-01--迭代器

    迭代器的概念 除了在其它语言中司空见惯的下标法访问容器元素之外,C++ 语言提供了一种全新的方法——迭代器(iterator)来访问容器的元素.迭代器其实类似于引用,指向容器中某一元素.迭代器(ite ...

  5. Python多个装饰器的顺序 转载

    3.使用两个装饰器当一个装饰器不够用的话,我们就可以用两个装饰器,当然理解起来也就更复杂了,当使用两个装饰器的话,首先将函数与内层装饰器结合然后在与外层装饰器相结合,要理解@语法的时候到底执行了什么, ...

  6. VBA连接操作符

    VBA支持以下连接运算符. 假设变量A=5,变量B=10,则 - 运算符 描述 示例 + 将两个值添加为变量,其值是数字 A + B = 15 & 连接两个值 A & B = 510 ...

  7. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  8. 关闭mysql严格模式

    配置文件my.ini sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 s ...

  9. Python爬虫之用脚本登录Github并查看信息

    前言分析目标网站的登录方式 目标地址:https://github.com/login     登录方式做出分析: 第一,用form表单方式提交信息, 第二,有csrf_token, 第三 ,是以po ...

  10. webpack 和 code splitting

    Code Splitting指的是代码分割,那么什么是代码分割,webpack和code splitting又有什么样的联系呢? 使用npm run dev:"webpack-dev-ser ...