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 条评论