POCO_MONGODB DOCS


 

set(ENABLE_XML OFF CACHE BOOL "" FORCE)
set(ENABLE_NETSSL OFF CACHE BOOL "" FORCE)
set(ENABLE_JSON ON CACHE BOOL "" FORCE)
set(ENABLE_DATA OFF CACHE BOOL "" FORCE)
set(ENABLE_CRYPTO OFF CACHE BOOL "" FORCE)
set(ENABLE_DATA_MYSQL ON CACHE BOOL "" FORCE)
set(ENABLE_DATA_SQLITE OFF CACHE BOOL "" FORCE)
set(ENABLE_REDIS OFF CACHE BOOL "" FORCE)
set(ENABLE_MONGODB ON CACHE BOOL "" FORCE)
set(ENABLE_FOUNDATION ON CACHE BOOL "" FORCE)

set(FETCHCONTENT_QUIET FALSE)

include(FetchContent)
FetchContent_Declare(
    poco
    URL https://pocoproject.org/releases/poco-1.10.1/poco-1.10.1.tar.gz
    URL_HASH SHA256=eb2aeecd25d9733d1e223f459560cd285d4cbf60983f96468e6eb0097ac5f4a6
)
FetchContent_MakeAvailable(poco)

系统使用 Poco 库实现了网络服务器的功能,想要再加一个数据库,于是在 Poco 的 Cmake 里把MONGODB 打开了,但是发现 cmake 的结果是:

[cmake] -- Building: Encodings
[cmake] -- Building: XML
[cmake] -- Building: JSON
[cmake] -- Building: Util
[cmake] -- Building: Net
[cmake] -- Populating glm
[cmake] -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.18363.

Furthermore,还报了一些之前觉得“可有可无”的报错,因为这些不安装也不影响 CMAKE 正常进行。

[cmake] -- Could NOT find APR (missing: APR_INCLUDE_DIR APR_LIBRARY) 
[cmake] -- Could NOT find APRUTIL (missing: APRUTIL_INCLUDE_DIR APRUTIL_LIBRARY) 
[cmake] -- Could NOT find Apache2 (missing: APACHE2_INCLUDE_DIR) 
[cmake] CMake Warning (dev) at C:/Program Files/CMake/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
[cmake]   The package name passed to `find_package_handle_standard_args` (MYSQL) does
[cmake]   not match the name of the calling package (MySQL).  This can lead to
[cmake]   problems in calling code that expects `find_package` result variables
[cmake]   (e.g., `_FOUND`) to follow a certain pattern.
[cmake] Call Stack (most recent call first):
[cmake]   build/_deps/poco-src/cmake/FindMySQL.cmake:107 (find_package_handle_standard_args)
[cmake] -- Could NOT find MYSQL (missing: MYSQL_INCLUDE_DIR MYSQL_LIBRARY) 
[cmake]   build/_deps/poco-src/CMakeLists.txt:117 (find_package)
[cmake] This warning is for project developers.  Use -Wno-dev to suppress it.

我猜原因可能在这里(),因为如果没有MySQL的依赖的话,是怎么安装的MySQL的包……

果然官方文档才是正解源泉=。=,我尝试在百度搜索“Poco/Mongodb”的关键词均未果,于是重新翻了一下官方文档,发现有一页专门讲了是怎么build:POCO BUILD 

External Dependencies

The following libraries require third-party software (header files and libraries) being installed to build properly:

  • NetSSL_OpenSSL and Crypt require OpenSSL.
  • Data/ODBC requires ODBC (Microsoft ODBC on Windows, unixODBC or iODBC on Unix/Linux)
  • Data/MySQL requires the MySQL client.

确实有些库需要第三方依赖,但是不包括MONGODB。

  • ENABLE_MONGODB Set to OFF|ON (default is ON) to build MongoDB support library

也就是说不用Set也可以装mongoDB的依赖……?

https://github.com/FONQRI/UCCP_Server_POCO 这个老哥也是用POCO的MONGODB实现的,但是他装的是全局,跟我的项目需要的动态库不一样=。=。

试了一下发现了更离谱的地方,就算开关全ON,也只Build那几个,但是把那几个的开关关了,反而会不Build。我拿Json做了个实验(因为之前也没有安JSON的包,我加了这个参数之后正常Build了):


BUG解决的过于弱智=。=,原因竟是学长下载了一个简陋的Poco包,这个包本来就不带MongoDB,我打开一看,难怪不能建立连接:

去Git下了一个完整版就好了!(发现这个的原因是我下了一个Git的版本,发现异常正常地安装上了MongoDB)

include(FetchContent)
FetchContent_Declare(
    poco
    GIT_REPOSITORY https://github.com/pocoproject/poco.git
    GIT_TAG poco-1.10.1-release
    GIT_SHALLOW true
    GIT_PROGRESS TRUE
)
FetchContent_MakeAvailable(poco)

0 条评论

发表评论

Avatar placeholder