在Windows中使用CMake构建POCO库

Building POCO libraries with CMake in Windows

本文关键字:构建 POCO CMake Windows      更新时间:2023-10-16

我目前正在用CMake构建POCO库,如下所示:

cmake -DCMAKE_BUILD_TYPE=Debug -G "NMake Makefiles" -DPOCO_STATIC .
nmake

这一切都很好,除了库不是用后缀mtd.libmdd.lib创建的,而是d.lib。因此,我的应用程序无法链接到PocoFoundationsmdd.lib,因为该文件不存在。

cmake命令中是否有任何关键字要传递,以便它使用正确的前缀构建?我知道从Visual Studio中有像debug_static_md这样的配置可以选择,但是有可能通过cmake而不修改CMakelists.txt吗?

只需将add_definitions( -DPOCO_STATIC -DPOCO_NO_AUTOMATIC_LIBS)添加到使用cmake编译的POCO库的CMakelists.txt中即可。这有效地禁用了试图从代码链接的头(*.h)定义:

#if defined(_MSC_VER)
    #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Crypto_EXPORTS)
        #pragma comment(lib, "PocoXXX" POCO_LIB_SUFFIX)
    #endif
#endif