cmake设置mfc编译项目

2023-05-16

cmake_minimum_required( VERSION 3.0 )

#项目名
set ( PROJ_NAME  DCMLIB )
project ( ${PROJ_NAME} )

#设置变量
set ( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON )

set ( CMAKE_AUTOMOC ON )#set()就是设置变量
set ( CMAKE_AUTORCC ON )

# 3) 取得源文件列表
AUX_SOURCE_DIRECTORY( ../../common      PROJ_SRC_COMMON_LIST )#查询commom文件夹下的所有cpp文件
#资源文件一般是QT会用到
set ( PROJ_QRC_LIST   )
set ( PROJ_SRC_LIST  ${PROJ_SRC_COMMON_LIST})

message("Found source files:")#message就跟c++的printf一样打印出结果
foreach( F ${PROJ_SRC_LIST} )
message(${F})
endforeach(${F})

message("Found QRC files:")
foreach( F ${PROJ_QRC_LIST} )
message(${F})
endforeach(${F})


# 4) 处理
if( MINGW )
  set ( CMAKE_RC_COMPLIER_INIT windres )
  enable_language( RC )
  set ( CMAKE_RC_COMPLIE_OBJECT
        "<CMAKE_RC_COMPLIER> <FLAGS> -o coff <DEFINES> -i <SOURCE> -o <OBJECT>")
endif()

# 5) 确定目标
set ( WIN_SYSTEM )
if(WIN32)
  if(MSVC)
     set ( WIN_SYSTEM  "WIN32" ) 
  elseif(CMAKE_COMPLIER_IS_GNUCXX)
     set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mwindows")
  else()
  endif()
elseif(UNIX)
  # nothing to do
else()
  message(SEND_ERROR "This cmake file only used in Windows!")
endif()

set(CMAKE_CXX_FLAGS_DEBUG    "${CMAKE_CXX_FLAGS_DEBUG}   -DQLEMR_CFG_DIAG_USE_MEM_CNTR  -DQLEMR_CFG_DIAG_USE_ASSERT -DQLEMR_CFG_DIAG_USE_DBG_OUTPUT ")
set(CMAKE_C_FLAGS_DEBUG      "${CMAKE_C_FLAGS_DEBUG}     -DQLEMR_CFG_DIAG_USE_MEM_CNTR  -DQLEMR_CFG_DIAG_USE_ASSERT -DQLEMR_CFG_DIAG_USE_DBG_OUTPUT ")
set(CMAKE_CXX_FLAGS_RELEASE  "${CMAKE_CXX_FLAGS_RELEASE} -DQLEMR_CFG_DIAG_USE_MEM_CNTR  ")
set(CMAKE_C_FLAGS_RELEASE    "${CMAKE_C_FLAGS_RELEASE}   -DQLEMR_CFG_DIAG_USE_MEM_CNTR  ")
#添加头文件包含目录
include_directories( ../../third-part/include)
#添加lib文件链接目录
link_directories( ${PROJECT_SOURCE_DIR}/../../third-part/lib )

#设置预编译项
add_definitions( -DQLEMR_CFG_DLL )
#共享DLL中使用 MFC
ADD_DEFINITIONS(-D_AFXDLL)
SET(CMAKE_MFC_FLAG 2)#设置CMAKE_MFC_FLAG为2,0表示使用标准的MFC,1表示静态MFC,2表示共享
add_executable(DCMLIB WIN32 ${PROJ_SRC_LIST}) #第一个参数是项目名字,第二个是,win32,第三个是所有的cpp文件列表
#设置字符集
add_definitions(-DUNICODE -D_UNICODE)
# 生成什么库,STATIC静态,SHARED动态库
add_library( dcmlib STATIC ${PROJ_SRC_LIST} ${PROJ_QRC_LIST} )
#添加链接库 
target_link_libraries( dcmlib debug      Ws2_32.lib netapi32.lib )
target_link_libraries( dcmlib optimized  Ws2_32.lib netapi32.lib  )

#设置目标属性 
set_target_properties( dcmlib PROPERTIES DEBUG_OUTPUT_NAME      dcmlib )
set_target_properties( dcmlib PROPERTIES RELEASE_OUTPUT_NAME    dcmlibd  )
# 6) 复制生成文件
install( FILES       ${PROJECT_SOURCE_DIR}/../../update.txt
         DESTINATION ${CMAKE_INSTALL_PREFIX} )#DESTINATION指定安装路径





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cmake设置mfc编译项目 的相关文章

随机推荐

  • 深度学习在graph上的使用

    原文地址 xff1a https zhuanlan zhihu com p 27216346 本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图 xff08 graph xff09 上的应用 ICML 是机器学习方面的顶
  • 软件需求分析--结构化分析(SA)方法

    结构化开发方法 Structured Developing Method 是现有的软件开发方法中最成熟 xff0c 应用最广泛的方法 xff0c 主要特点是快速 自然和方便 结构化开发方法由结构化分析方法 SA法 结构化设计方法 SD 法
  • 高级计算机网络知识点

    题目类型 xff1a 判断20分 xff08 10题 xff09 单选20分 xff08 10题 xff09 简答30分 xff08 5题 xff09 问答 计算30分 xff08 3题 xff09 1 ARPANET的主要设计原则 1 1
  • Linux使用技巧:linux下将命令值赋给shell变量

    很多小伙伴在写shell脚本的时候需要把命令输出的值赋给一些变量 xff0c 使得脚本在运行过程中能够顺利使用这些变量 例如 xff1a 很多时候我们就需要获取当前目录的绝对路径 xff0c pwd这个命令大家在熟悉不过 xff0c 可是要
  • OpenDaylight虚拟租户网络(VTN)详解及开发环境搭建

    一 VTN简介及架构分析 xff1a 具体详见开发人员指南wiki xff1a https wiki opendaylight org view Release Lithium VTN developer Guide 这里有两篇很好的初学者
  • LCD1602和LCD12864

    1602 字符型 xff08 字符型的模组 xff09 只能显示数字与字符 不可以显示汉字 12864 点阵型 xff08 图形型的模组 xff09 可根据需求任意显示字符 数字 汉字 图形 1602 为16字乘2行 12864 为128列
  • 虚拟机去混杂模式与 vlan in vxlan 特性

    虚拟机 vlan trunk 特性 1 功能 1 xff09 允许不同vlan的network下的虚拟机之间通信 一般情况下 xff0c 虚拟机只能在相同vlan的网络下通信 2 xff09 允许虚拟机发送vlan报文 2 组网图 虚拟机出
  • 慧智物联剖析信息化与数字化的区别,文件管理不容忽视

    目前 xff0c 数字化 一词铺天盖地 xff0c 已经成为经济 科技等领域最热门的话题 社会各界乃至国家都非常重视 xff0c 大力推广 xff0c 可以说是国家战略 信息化 xff0c 经常和数字化一起被提及 xff0c 是两个容易混淆
  • Dev-C++ 5.11简单使用说明

    点此下载 xff0c 下载完后解压并双击 Dev Cpp 5 11 TDM GCC 4 9 2Setup exe xff0c 默认安装即可 使用过程如下 xff1a 0 打开Dev C 43 43 开发环境 1 新建源文件 xff0c 按C
  • Deep Belief Network简介

    1 多层神经网络存在的问题 常用的神经网络模型 一般只包含输入层 输出层和一个隐藏层 xff1a 理论上来说 隐藏层越多 模型的表达能力应该越强 但是 当隐藏层数多于一层时 如果我们使用随机值来初始化权重 使用梯度下降来优化参数就会出现许多
  • 神经网络浅讲:从神经元到深度学习

    神经网络是一门重要的机器学习技术 它是目前最为火热的研究方向 深度学习的基础 学习神经网络不仅可以让你掌握一门强大的机器学习方法 xff0c 同时也可以更好地帮助你理解深度学习技术 本文以一种简单的 xff0c 循序的方式讲解神经网络 适合
  • CentOS7使用firewalld打开关闭防火墙与端口

    1 firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 xff1a systemctl status firewa
  • Vue生命周期

    Vue实例的生命周期 什么是生命周期 xff1a 从Vue实例创建 运行 到销毁期间 xff0c 总是伴随这各种各样的事件 xff0c 这些事件统称为生命周期 生命周期钩子 xff1a 就是生命周期事件的函数 主要的生命周期函数分类 xff
  • toapi模块简单使用

    toapi是一个api与爬虫结合的一个库 使用简单 可以自定义api展示 简单的mockserver 但只限制于get请求 toapi会在同级目录下建立缓存机制 再次访问就会读缓存了 安装 pip intall toapi pip inst
  • 高等数学同济第七版课后答案上册

    高等数学同济第七版课后答案上册 下载地址 xff1a 链接 xff1a https pan baidu com s 185C8RB4Y9pYO84V4Rup1Wg 提取码 xff1a p7o4 如果链接失效扫一扫右侧 xff0c 回复 高等
  • 以Integer类型传参值不变来理解Java值传参

    最近在写代码的时候出了一个错误 xff0c 由于对值引用理解的不深 将Integer传入方法中修改 xff0c 以为传入后直接修改Integer中的值就不用写返回值接收了 xff0c 虽然很快发现了问题 xff0c 但还是来总结一下 首先是
  • HD2AV_F3B

    文档内容 xff1a 循环存储器的编写 xff0c 每一行的像素输入进行存储 xff0c 再依据目标像素所在行进行相应的读取 工程中会开辟一定空间的RAM用于存储 xff0c 但是以一个循环的顺序去读写换 时间节点 xff1a 2014 1
  • pip install xxxx报错(一大堆红色exception)【解决】

    安装个distribute或nose或lpthw web或virtualenv 都可能出现下面问题 root 64 kali pip install distribute Collecting distribute Exception Tr
  • 防火墙关闭后不能ping通的解决办法

    修改被ping服务器的防火墙设置 xff1a 开始 控制面板 防火墙 高级 入站规则 文件和打印机共享 回显请求 ICMPv4 In 右键 启用 一共有两个 转载于 https www cnblogs com zhjx0521 p 1041
  • cmake设置mfc编译项目

    cmake minimum required VERSION 3 0 项目名 set PROJ NAME DCMLIB project PROJ NAME 设置变量 set CMAKE ALLOW LOOSE LOOP CONSTRUCTS