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)的样子。

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

  • "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

现在,忽略掉”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.

CMAKE 配置选项的更多相关文章

  1. cmake 查看配置选项

    cmake 查看配置选项可以用如下命令 cmake . -LH 查看help > cmake -h    cmake version 2.6-patch 4 Usage cmake [optio ...

  2. Qt5.7.0配置选项(configure非常详细的参数)

    configure是一个命令行工具,用于配置Qt编译到指定平台.configure必须运行于Qt源码根目录.当运行configure时,编译源码使用的是所选工具链中的make工具. 一.源码目录.编译 ...

  3. Linux-4.4-x86_64 内核配置选项简介【转】

    转自:http://fx114.net/qa-188-150553.aspx 本篇文章主要介绍了"Linux-4.4-x86_64 内核配置选项简介",主要涉及到Linux-4.4 ...

  4. SQL Serve里你总要去改变的3个配置选项

    你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...

  5. 理解GRUB2工作原理及配置选项与方法

    GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的.GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时 ...

  6. SQL Server安装完成后3个需要立即修改的配置选项(转载)

    你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...

  7. set_include_path — 设置 include_path 配置选项为当前脚本设置 include_path 运行时的配置选项。

    说明 string set_include_path ( string $new_include_path ) 为当前脚本设置 include_path 运行时的配置选项. 参数 new_includ ...

  8. nodejs的mysql模块学习(三)数据库连接配置选项详解

    连接选项 当在创建数据连接的时候 第一种大多数人用的方法 let mysql = require('mysql'); let connection = mysql.createConnection({ ...

  9. Android Gradle 配置选项合集

    //让gradle 引入构建安卓app的插件 apply plugin: 'com.android.application' //自定义变量, 使用的时候不需要 ext 前缀 ext { minSdk ...

随机推荐

  1. js 布尔值作为开关判断

    var flag = true; $("#more_info").click(function() { if( flag ){ $("#more_xl_more" ...

  2. python 改变字符串的编码方式

    字符串str的编码方式为utf-8,转化为gbk,分为两步 1. str=str.decode('utf-8') 2. str=str.encode('gbk')

  3. ios网络请求特殊字符&处理

    原文地址:http://www.xuebuyuan.com/2039420.html CFURLCreateStringByAddingPercentEscapes 在作项目的的时候,一般都要用到网络 ...

  4. arch安装

    [archwiki-install]: (https://wiki.archlinux.org/index.php/Installation_guide) uefi+gpt Gummiboot #se ...

  5. android 定时任务

    使用timertask进行定时任务 首先创建TimerTask: class SynchroTimerTask extends TimerTask { @Override public void ru ...

  6. linux 安装一些命令

    一.安装wget命令: debian 或者 ubuntu : sudo apt-get install wget centos : sudo yum -y install wget 二.安装rz.sz ...

  7. Newtonsoft.Json 处理多态类型的反序列化

    Newtonsoft.Json的序列化和反序列化很成熟也很好用, 最近在处理多态类型的反序列化中遇到了问题, 反序列化后只能到基类,而得不到也不能转换到子类.从网上查询了一番后,需要写一个创建类型的C ...

  8. 多线程间通信之AutoResetEvent和ManualResetEvent的原理分析

    AutoResetEvent 允许线程通过发信号互相通信. 通常,当线程需要独占访问资源时使用该类. 线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号. 如果 AutoRe ...

  9. C# js jquery复制textbox内容总结

    C# Language//复制: private void button1_Click(object sender, System.EventArgs e) {   if(textBox1.Selec ...

  10. Nginx+PHP优化实例

    1.PHP-FPM高负载的解决办法 http://blog.haohtml.com/archives/11162 2.Nginx优化配置 http://blog.haohtml.com/archive ...