CMAKE 配置选项

时间:2023-03-08 22:47:22

CMake Configuration Options

注:

  本文翻译自 dcmtk_wiki: Howto_CMakeConfiguration.

  DCMTK版本(原文):dcmtk-3.6.0  CMAKE版本(原文):CMake-2.8.0

  DCMTK版本(译者):dcmtk-3.6.0  DCMTK版本(译者):CMake-3.7.0

当我们准备用CMAKE编译DCMTK时,会显示一些配置选项。如果看起来没什么问题的话 ------ 哈哈哈,别担心,它还没配置好呢 :-) 下面将会是一个概览,用于介绍CMAKE中每个选项的含义和怎样选择才更合理。


Introduction

注意:CMake本身并不会编译DCMTK,它被用来生成项目文件(例如.用于 Visual Studio-Windows,Makefile-Unix, Xcode-Mac OS X),这些项目文件随后就可以使用编译器进行编译了。编译器该如何配置和管理DCMTK呢?不用担心,大多数的项目配置工作已经在DCMTK自带的CMAKEList.txt中完成了。

然而,还是有一些选项留给你来改变编译器以及DCMTK的编译过程。如果你确实不care那些特殊功能的话,你仅需要保持默认设置,然后忽略掉那些额外功能。如果你有兴趣的话,可以瞧一瞧下面的解释。


Pre-Configuration

这就是你初次启动CMake(cmake-gui)的样子。

CMAKE 配置选项

在这一步的配置过程中,只有两行需要填写,以下是他们的用途:

  • "Where is the source code":请在这添加DCMTK的资源文件目录,它应该在你硬盘的某个地方。注意,CMake已经支持斜杠了。
  • "Where to build the binaries":在这添加的一个目录,CMake会将生成的DCMTK项目文件放在哪里。当我们开始编译的时,所有的中间和结果文件(二进制)都将被放置在这。这不是说你把DCMTK安装到这里了,那要在稍后的配置中设置呢。

现在,点击 Configure。


Type of project file

现在,CMake 将会问你,要生成什么类型的项目文件呢? 给出的列表可能因CMake版本和操作系统的不同而存在一些差异。

Windows

在Windows下,大多时候我们使用的都是Visual Studio,DCMTK支持Visual Studio 6 到Visual Studio 20101. 确保你已经安装了你选择的版本,否则CMake在测试设置的时候,将会还给你一个 failure。相信你可以搞到一个能工作的VS版本。

当然,生成一个Windows下的NMake Makefiles也是可行的,如果你感兴趣,可以在英文版本中找到它。

Unix-like systems

在Unix下,你应该选择Unix Makefiles。 这将允许你在稍后使用命令行下的‘make’命令来编译DCMTK。当然,你或许会选择生成KDevelop 项目文件,它可能会工作,但我们并没有对他进行完全的测试。

Mac OS X

如果是在Mac OS X下构建项目,你可以在Unix Makefiles 或XCode works中任选一个。Mac OS X 遵循POSIX标准,所以它仍旧是Unix家的;当然,作为Apple的标准可视化开发平台,XCode 的支持也是无可厚非的。不管你选了哪一个,DCMTK都应该能很好的工作。


The fast way

如果你对细节不是很感兴趣,只是想用默认的设置来构建DCMTK项目。你可以直接点击generate,然后就会在之前设置的项目生成目录(Where to build the binaries)中获得你的项目。嗯,你在CMake中的任务也就结束了。

如果你对调整DCMTK的构建配置感兴趣的话,请继续阅读。


Prominent Configuration Options

CMAKE 配置选项

现在,忽略掉”SearchGroupedAdvanced“。让我们从截屏中红色区域中的行开始,他们在编译DCMTK是起着非常重要的作用。

CMAKE_BACKWARDS_COMPATIBILITY: 用于构建DCMTK的CMake的最低版本要求。如果你使用较老的版本,在尝试生成项目时CMake会报错。

CMAKE_INSTALL_PREFIX:指示DCMTK稍后将会被安装在哪。这里的默认设置是不同的,取决于操作系统的类型,你也可以填入你自己的路径。请再次注意,DCMTK不是由CMake直接安装的。在你告诉你的构建系统去生成它时,你才会得到它。例如,你可以在Visual Studio中开始安装。

DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS:如果你将要在Windows下用Visual Studio来编译项目的话,你或许会感兴趣。如果检测到是在Widows下工作的,DCMTK CMake 默认开启编译器标志。然而,如果你是一名老手,你或许会自己设置编译器标志。如果那真发生了,你就不能选择checkbox。在你知道你在做什么的时候,再这样做吧。

DCMTK_WITH_DOXYGEN:DCMTK API 文档是自动从DCMTK源文件中提取和生成的。为此,需要用到免费工具 doxygen。如果CMake在你的系统中找到了doxygen,这个选项就是开启的。例如,HTML API 文档可能将会被构建。如果没找到的话这个选项就是关闭的。如果你确信你的系统安装了doxygen,你可以手动的将doxygen.exe可执行文件所在的路径添加到这里。

Third party libraries

DCMTK没有三方库也可以很好的工作。然而,如果没有他们的话,一些工具将会失去其扩展功能,另一些将不能正常工作(如果你尝试的话,他们会告诉你他们不能)。你能从DCMTK官网获得Windows版的预编译版本的DCMTK三方库(查看”support libraries“)。对于其他系统来说,他们可以自己安装或编译。

下列的库可能被DCMTK使用:

  • OpenSSL
  • libpng
  • libtiff
  • libxml
  • zlib

在CMake的配置窗口中,他们中的每一个都有两个不同的选项:

  • DCMTK_WITH_XXX(XXX是OPENSSL,LIBPNG,LIBTIFF,LIBXML或ZLIB):禁用或启用每个支持库。在默认情况下是启用或禁用的,取决于CMake是否在你的系统中找到了相应的库。
  • WITH_XXXINC(XXX是OPENSSL, LIBPNG, LIBTIFF, LIBXML或ZLIB):如果CMake在你的系统找到了库,库所在的路径将填充在这里。如果出现的是WITH_XXXINC_NOTFOUND,你可以自己添加库的路径到这里。如果这样做了,为了保证库被编译,你还需要检查DCMTK_WITH_XXX处于开启状态。

如果你修改了某些路径,CMake将会遗忘之前你手动配置的路径。

Private Tags

这是一个可有可无的标签,对应DCMTK为增强其灵活性而设置的私有标签。如果你有兴趣,可以阅读原文 Private Tags .

Threads

DCMTK由他自己的跨平台的,线程相关的类。例如:信号(OFSemaphare), 互斥锁(OFMutex)等等。你可以通过选择/不选择 DCMTK_WITH_THREADS来开启/关闭它们。

需要注意的是:DCMTK没有线程库也能正常运转。但如果你想将DCMTK添加至多线程运行的程序中,那么你需要启用DCMTK的线程功能来保护DCMTK内部数据的安全。

Executable/Library Output Path

EXECUTABLE_OUTPUT_PATH:预定义的CMake变量,用于配置项目的可执行文件输出目录。

LIBRARY_OUTPUT_PATH:预定义的CMake变量,用于配置项目的静态库输出目录。

注1:3.6.0版本是2011年发布的,支持的VS版本是Visual Studio 2006 - Visual Studio 2010。最新预览版的VS版本已提升至Visual Studio 2010- Visual Studio 2015.