windows cmake 文件无效或损坏_对CMake的一些系统变量的理解

CMake作为国产CFD开源软件OneFLOW的使用的一个跨平台的安装(编译)工具,功能非常强大,且对于大型软件跨平台构建是非常重要的。但是任何事情都有两面性,作为一个强大的构建工具,其本身也是有学习成本的。对于高手自不必多言,但是对于很多初学者来说还是有一定学习曲线的。

本文尝试在某种程度上降低这种学习曲线,这个切入点并不从简单的编译开始,而是从一个没有源码的工程开始,看看Cmake能够给出什么样的信息,从而对CMake有一些初步的感性的认识。

应该认识到CMake本身起始也是一种编程语言,写好Cmake文件也是一门艺术。

下面介绍下具体过程:

在d盘gitdir目录下建立CMakeTestPrj目录,里面包含一个空的build目录和一个CMakeList文件。

c2bbc44e375d2238c19d947a093e278c.png

CMakeLists.txt文件内容如下:

cmake_minimum_required (VERSION 3.10)
project(MyTest DESCRIPTION "This is a test cmake project" )

message(STATUS "Welcome to Build Project ${CMAKE_PROJECT_NAME}.")
message(STATUS "The operating system is ${CMAKE_HOST_SYSTEM_NAME}, version is ${CMAKE_HOST_SYSTEM_VERSION}.")
message(STATUS "The CMAKE_SIZEOF_VOID_P is ${CMAKE_SIZEOF_VOID_P}.")
message(STATUS "The CMAKE_HOST_WIN32 is ${CMAKE_HOST_WIN32}.")
message(STATUS "The CMAKE_HOST_UNIX is ${CMAKE_HOST_UNIX}.")
message(STATUS "The CMAKE_HOST_SYSTEM_PROCESSOR is ${CMAKE_HOST_SYSTEM_PROCESSOR}.")
message(STATUS "The CMAKE_LIBRARY_ARCHITECTURE is ${CMAKE_LIBRARY_ARCHITECTURE}.")
message(STATUS "The CMAKE_VERSION is ${CMAKE_VERSION}.")
message(STATUS "The CMAKE_MAJOR_VERSION is ${CMAKE_MAJOR_VERSION}.")
message(STATUS "The CMAKE_MINOR_VERSION is ${CMAKE_MINOR_VERSION}.")
message(STATUS "The CMAKE_PATCH_VERSION is ${CMAKE_PATCH_VERSION}.")
message(STATUS "The CMAKE_TWEAK_VERSION is ${CMAKE_TWEAK_VERSION}.")

message(STATUS "The CMAKE_SHARED_LIBRARY_PREFIX is ${CMAKE_SHARED_LIBRARY_PREFIX}.")
message(STATUS "The CMAKE_SHARED_LIBRARY_SUFFIX is ${CMAKE_SHARED_LIBRARY_SUFFIX}.")
message(STATUS "The CMAKE_SHARED_MODULE_PREFIX is ${CMAKE_SHARED_MODULE_PREFIX}.")
message(STATUS "The CMAKE_SHARED_MODULE_SUFFIX is ${CMAKE_SHARED_MODULE_SUFFIX}.")

message(STATUS "The CMAKE_STATIC_LIBRARY_PREFIX is ${CMAKE_STATIC_LIBRARY_PREFIX}.")
message(STATUS "The CMAKE_STATIC_LIBRARY_SUFFIX is ${CMAKE_STATIC_LIBRARY_SUFFIX}.")

message(STATUS "The CMAKE_OBJECT_PATH_MAX is ${CMAKE_OBJECT_PATH_MAX}.")
message(STATUS "The CMAKE_MAKE_PROGRAM is ${CMAKE_MAKE_PROGRAM}.")
message(STATUS "The CMAKE_CACHEFILE_DIR is ${CMAKE_CACHEFILE_DIR}.")
message(STATUS "The CMAKE_COMMAND is ${CMAKE_COMMAND}.")
message(STATUS "The CMAKE_CPACK_COMMAND is ${CMAKE_CPACK_COMMAND}.")
message(STATUS "The CMAKE_CTEST_COMMAND is ${CMAKE_CTEST_COMMAND}.")
message(STATUS "The CMAKE_GENERATOR is ${CMAKE_GENERATOR}.")
message(STATUS "The CMAKE_GENERATOR_INSTANCE is ${CMAKE_GENERATOR_INSTANCE}.")
message(STATUS "The CMAKE_GENERATOR_PLATFORM is ${CMAKE_GENERATOR_PLATFORM}.")
message(STATUS "The CMAKE_GENERATOR_TOOLSET is ${CMAKE_GENERATOR_TOOLSET}.")
message(STATUS "The CMAKE_IMPORT_LIBRARY_PREFIX is ${CMAKE_IMPORT_LIBRARY_PREFIX}.")
message(STATUS "The CMAKE_IMPORT_LIBRARY_SUFFIX is ${CMAKE_IMPORT_LIBRARY_SUFFIX}.")

message(STATUS "The CMAKE_AR is ${CMAKE_AR}.")

message(STATUS "The WIN32 is ${WIN32}.")
message(STATUS "The MSVC is ${MSVC}.")
message(STATUS "The MSVC_IDE is ${MSVC_IDE}.")
message(STATUS "The MSVC_TOOLSET_VERSION is ${MSVC_TOOLSET_VERSION}.")
message(STATUS "The MSVC_VERSION is ${MSVC_VERSION}.")
message(STATUS "The CMAKE_VS_PLATFORM_NAME is ${CMAKE_VS_PLATFORM_NAME}.")
message(STATUS "The CMAKE_VS_PLATFORM_TOOLSET is ${CMAKE_VS_PLATFORM_TOOLSET}.")
message(STATUS "The CMAKE_VS_PLATFORM_TOOLSET_VERSION is ${CMAKE_VS_PLATFORM_TOOLSET_VERSION}.")
message(STATUS "The CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.")

message(STATUS "The PROJECT_VERSION is ${PROJECT_VERSION}.")
message(STATUS "The PROJECT_VERSION_MAJOR is ${PROJECT_VERSION_MAJOR}.")

message(STATUS "The MyTest_VERSION is ${MyTest_VERSION}.")

message(STATUS "The BUILD_SHARED_LIBS is ${BUILD_SHARED_LIBS}.")

message(STATUS "The CTEST_BINARY_DIRECTORY is ${CTEST_BINARY_DIRECTORY}.")
message(STATUS "The CTEST_BUILD_COMMAND is ${CTEST_BUILD_COMMAND}.")
message(STATUS "The CTEST_BUILD_NAME is ${CTEST_BUILD_NAME}.")

message(STATUS "The PROJECT_BINARY_DIR is ${PROJECT_BINARY_DIR}.")
message(STATUS "The PROJECT_DESCRIPTION is ${PROJECT_DESCRIPTION}.")


message(STATUS "The CMAKE_SOURCE_DIR is ${CMAKE_SOURCE_DIR}.")
message(STATUS "The CMAKE_BINARY_DIR is ${CMAKE_BINARY_DIR}.")

message(STATUS "The CMAKE_CURRENT_SOURCE_DIR is ${CMAKE_CURRENT_SOURCE_DIR}.")
message(STATUS "The CMAKE_CURRENT_BINARY_DIR is ${CMAKE_CURRENT_BINARY_DIR}.")

实际上主要就是使用了message输出各种变量的信息,这些信息有助于加强初学者对于Cmake这种语言的理解。

80c8f009f2cf5fb49afd2c921068777d.png

打开CMake图形界面,如上图所示设置,并选择Configure,有:

d78d2218f3e1f20e777edb48ac6854a2.png

6bbc014f7ee5cd386ec23755fcc57674.png

这样就可以方便的监测Cmake自带的各种变量值了,也可以根据实际情况,其中的一些语句用到实际的工程项目中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值