广西执业药师培训网站,网站设计 原型图,centos7装wordpress,哪些网站做夜场女孩多这篇文章也是一个无三方库的单项目 根据位数和模式分目录存放可执行文件#xff0c;而且可执行的文件名中包含了位数、模式和编译器。 目录 给出cmake文件使用mingw的结果cmake中的一些知识点变量设置与访问cmake中的函数cmake的预定义 本文有以下几个要点
cmake中常用路径的…这篇文章也是一个无三方库的单项目 根据位数和模式分目录存放可执行文件而且可执行的文件名中包含了位数、模式和编译器。 目录 给出cmake文件使用mingw的结果cmake中的一些知识点变量设置与访问cmake中的函数cmake的预定义 本文有以下几个要点
cmake中常用路径的宏定义设置输出路径根据relsea和平台来确定可执行文件名称
cpp文件还是上一篇文章中的是一个简单的cout。
给出cmake文件
cmake_minimum_required(VERSION 3.12)
project(MyProject)# 设置可执行文件名
set(EXECUTABLE_NAME MyExecutable)
# 添加可执行文件
add_executable(${EXECUTABLE_NAME} main.cpp)message(STATUS ^^^^^^Compiler: ${CMAKE_CXX_COMPILER_ID})# 获取编译器标识符
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)set(COMPILER_NAME gcc)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL MSVC)set(COMPILER_NAME msvc)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)set(COMPILER_NAME clang)
else()message(FATAL_ERROR Unsupported compiler)
endif()#获取系统位数
if(${COMPILER_NAME} STREQUAL msvc )if(CMAKE_CL_64)set(platform x64)else(CMAKE_CL_64)set(platform x64)endif(CMAKE_CL_64)
else()# sizeof(void*)。这个变量的值通常为 4 或 8表示指针在系统中占用的字节数。在绝大多数情况下32 位系统中指针大小为 4 字节64 位系统中指针大小为 8 字节if( CMAKE_SIZEOF_VOID_P EQUAL 8 )set(platform x64)else()set(platform x86)endif()
endif()# 设置输出路径 debug和release 分开存放
# lib目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/Lib/${platform}/Debug)
# dll目录
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/Lib/${platform}/Debug)
# exe目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/Bin/${platform}/Debug)
# PDB目录
set(CMAKE_PDB_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/PDB/${platform}/Debug)set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/Lib/${platform}/Release)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/Lib/${platform}/Release)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/Bin/${platform}/Release)
set(CMAKE_PDB_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/PDB/${platform}/Release)# 设置后缀变量
set(CMAKE_DEBUG_POSTFIX _${platform}d_${COMPILER_NAME})
set(CMAKE_RELEASE_POSTFIX _${platform}_${COMPILER_NAME})# 给可执行文件设置后缀名
set_target_properties(${EXECUTABLE_NAME} PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}RELEASE_POSTFIX ${CMAKE_RELEASE_POSTFIX})# debug模式下保存调试信息
if(${COMPILER_NAME} STREQUAL msvc )set_target_properties(${EXECUTABLE_NAME} PROPERTIES LINK_FLAGS /DEBUG )
endif()使用mingw的结果
E:\workspace\cmake_demo\simple_demo\bin\x64\Release\MyExecutable_x64_gcc.exe 从结果出看出根据位数和模式分开存放可执行文件而且可执行的文件名中包含了位数、模式和编译器。 cmake -G “MinGW Makefiles” -DCMAKE_C_FLAGS-m64 -DCMAKE_BUILD_TYPERelease … 上篇文章提到了-D还记得吗-D是设置变量CMAKE_C_FLAGS和CMAKE_BUILD_TYPE是cmake预定义的分别表示位数和模式。mingw32-make按照cmake中的来编译无需额外设置参数。
PS E:\workspace\cmake_demo\simple_demo\build_mingw cmake -G MinGW Makefiles -DCMAKE_C_FLAGS-m64 -DCMAKE_BUILD_TYPERelease ..
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: E:/MinGW/mingw64/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: E:/MinGW/mingw64/bin/c.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- ^^^^^^Compiler: GNU
-- Configuring done (1.0s)
-- Generating done (0.0s)
-- Build files have been written to: E:/workspace/cmake_demo/simple_demo/build_mingw
PS E:\workspace\cmake_demo\simple_demo\build_mingw mingw32-make
[ 50%] Building CXX object CMakeFiles/MyExecutable.dir/main.cpp.obj
[100%] Linking CXX executable E:\workspace\cmake_demo\simple_demo\bin\x64\Release\MyExecutable_x64_gcc.exe
[100%] Built target MyExecutable
PS E:\workspace\cmake_demo\simple_demo\build_mingwMSVC就不演示了
cmake中的一些知识点
变量设置与访问
使用set 设置变量使用${} 访问变量
cmake中的函数
add_executable 和set_target_properties 都是cmake的函数函数名不分大小写。也可以自定义函数后面的文章会提及。
cmake的预定义
这是cmake预先定义的宏不分大小写。 CMAKE_SOURCE_DIRCMakeLists.txt所在的源代码根目录。 CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUGDebug构建时库文件输出目录。 CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUGDebug构建时动态库文件输出目录。 CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUGDebug构建时可执行文件输出目录。 CMAKE_PDB_OUTPUT_DIRECTORY_DEBUGDebug构建时PDB文件输出目录。 CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASERelease构建时库文件输出目录。 CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASERelease构建时动态库文件输出目录。 CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASERelease构建时可执行文件输出目录。 CMAKE_PDB_OUTPUT_DIRECTORY_RELEASERelease构建时PDB文件输出目录。 CMAKE_SIZEOF_VOID_P指针大小通常为4或8字节表示系统是32位还是64位。 CMAKE_CXX_COMPILER_ID表示C编译器的标识符可能的值为 “GNU”、“MSVC”、“Clang” 等。 CMAKE_BUILD_TYPE用于设置构建类型例如 “Debug” 或 “Release”。 CMAKE_CL_64这个变量在MSVC编译器中用于判断是否为64位系统。 CMAKE_DEBUG_POSTFIX用于指定Debug构建的输出文件名后缀。 CMAKE_RELEASE_POSTFIX用于指定Release构建的输出文件名后缀
推荐链接 https://cmake.org/cmake/help/latest/# https://cmake.org/cmake/help/latest/guide/tutorial/index.html