Visual Studio 编译 POCO C++ Libraries 并设置开发环境

准备

我们需要准备:

  1. POCO C++ Libraries 的源代码;
  2. Visual Studio:版本从 2010 到现在最新的 2017,都可以,只要是 CMake 支持的版本就行。
  3. CMake:版本别太老吧。当前 CMake 最新版本是 3.12。太老的版本我没试过,但是我想只要版本不低于 2.8 应该就没问题。

当前 POCO C++ Libraries 的最新稳定版是 1.9.0,提供了 CMake 文件,可以生成针对 Visual Studio 各个版本的工程文件。要编译 POCO C++ Libraries,首先要根据需要下载源码。如果只需要基本的功能就够了,可以下载 poco-1.9.0.zip。如果需要完整的功能,可以下载 poco-1.9.0-all.zip。注意完整的功能需要 OpenSSL、MySQL 客户端 SDK等依赖包。

编译

以 poco-1.9.0.zip、Visual Studio 2015 为例,编译过程如下:

  1. 解压 poco-1.9.0.zip
  2. 编译 x86 平台的动态链接库
  3. 编译 x64 平台的动态链接库

Win32 (x86) 平台:在源码根目录,执行以下命令:

mkdir cmake_build_x86
cd cmake_build_x86
cmake -G "Visual Studio 14 2015" ..

然后在 cmake_build_x86 文件夹里面,用 Visual Studio 2015 打开 Poco.sln,编译 POCO C++ Libraries 的动态链接库:

这里写图片描述

x64 平台:在源码根目录,执行以下命令:

mkdir cmake_build_x64
cd cmake_build_x64
cmake -G "Visual Studio 14 2015 Win64" ..

然后在 cmake_build_x64 文件夹里面,用 Visual Studio 2015 打开 Poco.sln,编译 POCO C++ Libraries 的动态链接库

编译完成之后,在编译文件夹(cmake_build_x86 / cmake_build_x64)的 bin、lib 子目录中,就是我们最终得到的:(1)动态链接库;(2)以及为了调用动态库,Visual C++ 在 Compile time 需要的静态库。

设置开发环境

设置系统变量

我把源代码解压缩后放在这个目录:

D:\Dev\POCO\v1.9.0_compact_MSVC

然后,设置系统变量 POCO_ROOT 将其指向上述目录:
这里写图片描述

%POCO_ROOT%\include

将所有的 include 文件夹集中在 %POCO_ROOT%\include 目录中:
在 %POCO_ROOT% 目录中,你会注意到,Encodings、Foundation、JSON 等等这些文件夹下面,分别有它们各自的 include 目录。
这样就会导致在 Visual Studio 中设置引用目录的时候非常不方便,所以我们创建 %POCO_ROOT%\include 目录,然后将Encodings、Foundation、JSON 等等这些文件夹下面的 include 目录里面的文件都集中在 %POCO_ROOT%\include 目录中。需要收集的目录包括:

Encodings Foundation JSON Net Util XML

最终 %POCO_ROOT%\include 目录看起来应该是这样子:
这里写图片描述

%POCO_ROOT%\build

然后再将编译得到的 bin、lib 文件夹都收集到以下目录:

%POCO_ROOT%\build\Win32
%POCO_ROOT%\build\x64

在 Visual C++ 工程文件中的设置

在 Visual C++ 工程文件中,要想引用 POCO C++ Libraries 的动态链接库,要这样设置:

1. Include

在 C/C++ | General | Additional Include Directories 设置里面增加:

$(POCO_ROOT)\include

2. Libs

在 Linker | General | Additional Library Directories 设置里面增加:

$(POCO_ROOT)\build\$(Platform)\$(Configuration)\

在 Linker | Input | Additional Dependencies 设置里面,针对 Debug configuration,增加:

PocoEncodingsd.lib
PocoFoundationd.lib
PocoJSONd.lib
PocoNetd.lib
PocoUtild.lib
PocoXMLd.lib

针对 Release configuration,增加:

PocoEncodings.lib
PocoFoundation.lib
PocoJSON.lib
PocoNet.lib
PocoUtil.lib
PocoXML.lib

3. DLLs

在 Post-Build Event 设置里面增加拷贝 DLL 文件到目标文件夹的命令。

copy "$(POCO_ROOT)\build\$(Platform)\bin\$(Configuration)\*.*" $(TargetDir)

你可能感兴趣的:(C++)