C++ 在Windows中使用CMake构建POCO库
我目前正在使用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 -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…)。看见