OCCT入门-使用CMake构建项目

android studio 下载 | 2018-10-07 11:54

在occt-beginner项目中我们使用Visual Studio 2010创建的MFC工程文件,这意味着用户如果使用高版本的VS,需要升级工程文件才能打开。若我们一开始使用VS2019创建工程文件,用户手中的VS2010则无法打开工程文件,必须安装高版本IDE才能打开。

除了Visual Studio系列需要打开工程外,我们的项目有可能还需要跨平台:Linux/Mac OS/Android/iOS等,使用跟IDE绑定的工程文件来管理代码的编辑简直就编程了噩梦。

开源软件,包括OCCT,都会使用CMake来管理C++项目,使用CMake配置文件间接生成编译器支持的工程文件。VS2017直接支持CMake配置文件的编译。

CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.

CMake不仅可以用于构建,还可以用于测试和打包软件。

我们使用VS创建好工程项目后,一般先要配置以下第三方库的引用路径,包括:

lib查找路径

有的情况下设置一下预处理宏变量。其他的设置一般人都很少使用。我们学会使用CMake设置这几个变量基本上能满足大部分的项目需求。

全局的CMakeLists可以对应于.sln,用于管理多个prj项目。如果简单的程序,只需要一个CMakeLists文件。

全局的设置包括一下几件事情:

设置需要的CMake最低版本. CMake一致在演进,会增加新特性,也会废弃某些特性。因此需要指定我们写的这个CMakeLists适用的最低版本。

设置工程名称

设置全局使用的第三方库的路径

设置bin输出目录 这个也可以不设置,但建议设置。CMake默认设置的目录跟临时文件混在一起,不够清晰。

设置依赖的子目录

详细配置如下:

cmake_minimum_required(VERSION 3.5)

project(OcctBeginnerMFC)

# 从环境变量里面取得CASROOT的路径

set(CASROOT "$ENV{CASROOT}")

if ("${CASROOT}" STREQUAL "")

# 如果没有找到,则通过CMake—GUI让用户设置一个

set (CASROOT "${CMAKE_SOURCE_DIR}/occt" CACHE PATH "OCCT ROOT directory")

message("Please specify the CASROOT directory!")

# 输出信息,用于我们查看是否时我们用到的版本

message(${CASROOT})

# 设置bin输出目录

set (OUTPUT_DIR "${CMAKE_SOURCE_DIR}/bin/${MSVC_TOOLSET_VERSION}" CACHE PATH "Output directory")

add_subdirectory(OcctBeginner)

项目工程主要时包含所需的源代码文件和依赖的第三方库。

针对OCCT的MFC项目,包含以下内容:

项目名称

头文件路径: INCLUDE_DIRECTORIES

lib路径: LINK_DIRECTORIES

源代码文件

资源文件

预处理宏定义:ADD_DEFINITIONS

bin输出目录:EXECUTABLEOUTPUTPATH

依赖的lib:targetlinklibraries

PROJECT(OcctBeginner)

INCLUDE_DIRECTORIES(

${CASROOT}/inc

LINK_DIRECTORIES(${CASROOT}/win64/vc10/lib)

FILE(GLOB PROJECT_SOURCE_FILES *.txt)

FILE(GLOB PROJECT_SOURCE_FILES ${PROJECT_SOURCE_FILES}

ADD_DEFINITIONS(-D_AFXDLL -D_UNICODE)

SET(CMAKE_MFC_FLAG 2)

ADD_EXECUTABLE(OcctBeginner WIN32 ${PROJECT_SOURCE_FILES})

SET(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR})

SET(OCCT_LIBS  TKernel

TKShHealing

target_link_libraries (OcctBeginner ${OCCT_LIBS})

经过一番折腾之后,我们可以使用VS2010~VS2019任何一个版本的VS IDE来编辑和编译OcctBeginner项目了。完整的代码请参考:-beginner/tree/mfc-02-cmake

依然是env.bat的问题,为了正确的使用OCCT的环境变量,可以按照以下姿势打开CMake:

打开命令行

运行env.bat

输入cmake-gui,打开CMake

定位source code

执行Configure和Generate

这样在VS里面就可以愉快的运行程序。

敬请关注Graphing,留下您宝贵的意见: