首页 > 其他分享 >我的CMakeLists.txt模板

我的CMakeLists.txt模板

时间:2022-10-06 17:55:11浏览次数:53  
标签:CMakeLists set CMAKE NAME CURRENT PROJ endif txt 模板

我的CMakeLists.txt模板, 适用于windows SDK风格的程序,不考虑测试和安装问题.

rc资源文件部分,适用windows项目。

# ################################################################
# Copyright (c) 2022 wsk3Q
#
# history:
#  2022-10-05 created
#
# 使用:
# mkdir build
# cd build
# cmake -A Win32 ..
# cmake -G "MSYS Makefiles" ..
# cmake --build . --config Release
# ################################################################
cmake_minimum_required(VERSION 3.0)

if (POLICY CMP0074)
  #for xxx_LIBRARY
  cmake_policy(SET CMP0074 NEW)
endif()

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

message(STATUS "Using CMake version ${CMAKE_VERSION}")

# handle debug lib naming based on shipped project naming
if(NOT CMAKE_DEBUG_POSTFIX)
    set(CMAKE_DEBUG_POSTFIX d)
endif()

set(PROJ_NAME "testbin")
project(${PROJ_NAME} VERSION 0.1)

set(PROJ_HDRS
    resource.h
)
set(PROJ_SRCS
    WinAnim.c
)

# RC文件处理
if(MSVC)
    list(APPEND PROJ_SRCS WinAnim.rc)
elseif(MINGW)
    # This gets us DLL resource information when compiling on MinGW.
    if(NOT CMAKE_RC_COMPILER)
        set(CMAKE_RC_COMPILER windres.exe)
    endif()
    add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/res.obj
                       COMMAND ${CMAKE_RC_COMPILER}
                            -D GCC_WINDRES
                            -I ${CMAKE_CURRENT_SOURCE_DIR}
                            -I ${CMAKE_CURRENT_BINARY_DIR}
                            -o ${CMAKE_CURRENT_BINARY_DIR}/res.obj
                            -i ${CMAKE_CURRENT_SOURCE_DIR}/WinAnim.rc)

    list(APPEND PROJ_SRCS ${CMAKE_CURRENT_BINARY_DIR}/res.obj)
endif()

add_executable(${PROJ_NAME} WIN32
                ${PROJ_SRCS} ${PROJ_HDRS}
              )

if(UNIX)
    target_compile_options(${PROJ_NAME} PRIVATE "-O2")

    if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
        set_property(TARGET ${PROJ_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)

        target_compile_options(${PROJ_NAME} PRIVATE
            "-Wno-maybe-uninitialized"
            "-Wno-unused-result"
        )
    endif()

    install(TARGETS ${PROJ_NAME}
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
        PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
    )
elseif(WIN32)
    target_compile_definitions(${PROJ_NAME} PRIVATE
                "UNICODE"
                "_UNICODE"
                "_WIN32_WINNT=0x600"
    )

    if(MSVC)
        target_compile_definitions(${PROJ_NAME} PRIVATE
                "_CRT_SECURE_NO_WARNINGS"
                "_CRT_SECURE_NO_DEPRECATE"
        )

        target_compile_options(${PROJ_NAME} PRIVATE
            "/wd4996"
            "/wd4244"
            "/wd4246"
            "/wd4267"
            "/wd4146"
            "/wd4018"
        )
    endif()
    
    target_link_libraries(${PROJ_NAME}
         PRIVATE
         user32
         gdi32
         Comctl32
         )
endif()


标签:CMakeLists,set,CMAKE,NAME,CURRENT,PROJ,endif,txt,模板
From: https://www.cnblogs.com/wsk3q/p/16758112.html

相关文章

  • [答疑]需求说明书模板中的编写目的好象是废话
    ​​别把洋垃圾当宝贝-评InfoQ中国“敏捷……”文章(一)​​譯揮(25****466)10:00:20请教一个问题:在我们的需求说明书模板中,开头有一个编写目的要写。如何写比较有意义?如一......
  • P3834 【模板】可持久化线段树 2
    P3834主席树模板,求区间第k小。1#include<bits/stdc++.h>2usingnamespacestd;3#definelctr[i].ch[0]4#definerctr[i].ch[1]5#defineLctr[j].ch[0......
  • TZOJ 6948: 走迷宫/深搜模板
    描述 有一个迷宫,图案如图5.2.6所示,红色区域表示不能通行,蓝色区域表示能通行,在迷宫中通行的方向是上下左右四个方向。从入口(1,1)位置进入迷宫,编程判断能否从出口位置......
  • C++ 泛型(模板与容器)
    文章目录​​一、泛型的基本思想:​​​​函数模板的性质​​​​C++模版函数/类的语法​​​​类模板的性质​​​​二、C++STL简介​​​​2.1算法(algorithm)​​​​2.......
  • 高级vue 模板中 ref 的使用用法
    ref+普通dom标签 获取真实dom对象ref+组件标签 获取组件实例对象 <template>  <h1ref="h1Ref">www.96net.com.cn</h1>  <ref-comoonentref="co......
  • 字符串哈希 模板 例题
    字符串哈希可以快速判断两个子字符串是否相等原理:https://www.cnblogs.com/ydUESTC/p/15722400.html注意字符串哈希时后面的字符视为低位,这样方便取一段字符的哈希时先......
  • 异或方程组高斯消元模板
    inlinevoidsolve(intn){for(inti=1,top=1;i<=n;i++,top++){intcur=0;for(intj=top;j<=n;j++)if(m......
  • 读boost::multi_array有感,多维数组实现(非类型模板,偏特化)
    开发环境:VS2002(VC7)本文做如下简化:1,假定所有维元素都是5。2,不考虑const的[]。3,由于只是熟悉原理,不考虑各种异常情况。问题一,请实现一个一维整形数组,只需重载[]。问......
  • Prism 模板使用
    一、打开VisualStudio2022工具,选择“扩展”中的“扩展管理”菜单。如下图:二、在“扩展管理”界面中,搜索“PrismTemplatePack”并下载安装。如下图:三、重新打开Visu......
  • 事件相机特征跟踪-模板跟踪方法
    ​1、前言由于事件相机不能提供完整的图像,所以最初的特征跟踪依赖传统相机的数据。本推送介绍事件相机特征检测与跟踪的一篇较早的工作:FeatureDetectionandTrackingwith......