Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Windows中使用CMake构建POCO库_C++_Cmake_Static Linking_Poco Libraries_Nmake - Fatal编程技术网

C++ 在Windows中使用CMake构建POCO库

C++ 在Windows中使用CMake构建POCO库,c++,cmake,static-linking,poco-libraries,nmake,C++,Cmake,Static Linking,Poco Libraries,Nmake,我目前正在使用CMake构建POCO库,如下所示: cmake -DCMAKE_BUILD_TYPE=Debug -G "NMake Makefiles" -DPOCO_STATIC . nmake 除了库不是用后缀mtd.lib或mdd.lib创建的,而是用后缀d.lib创建的之外,所有这些都可以正常工作。因此,我的应用程序无法链接到PocoFoundationsmdd.lib,因为该文件不存在 在cmake命令中是否有要传递的关键字,以便它使用正确的前缀生成?我知道,在Visual Stu

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

cmake -DCMAKE_BUILD_TYPE=Debug -G "NMake Makefiles" -DPOCO_STATIC .
nmake
除了库不是用后缀
mtd.lib
mdd.lib
创建的,而是用后缀
d.lib
创建的之外,所有这些都可以正常工作。因此,我的应用程序无法链接到
PocoFoundationsmdd.lib
,因为该文件不存在


cmake
命令中是否有要传递的关键字,以便它使用正确的前缀生成?我知道,在Visual Studio中有一些配置,例如可以选择
debug\u static\u md
,但是是否可以通过
cmake
而无需修改
CMakelists.txt

只需添加
添加定义(-DPOCO\u static-DPOCO\u NO\u 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

只需将
add_定义(-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

为什么你决定图书馆应该有这样一个后缀?如果我没记错的话,
d.
是在POCO调试构建的情况下得到的。当然,您可以编辑
CMakeLists.txt
,但为什么呢?使用MSVC编译时,POCO库具有自动链接到适当类型库的#pragma注释(lib…)。看看你为什么决定图书馆应该有这样一个后缀?如果我没记错的话,
d.
是在POCO调试构建的情况下得到的。当然,您可以编辑
CMakeLists.txt
,但为什么呢?使用MSVC编译时,POCO库具有自动链接到适当类型库的#pragma注释(lib…)。看见