我在JetBrains CLion中有一个HelloWorld
项目并设置boost
所以我可以很好地构建它。
我设法使用soci
和cmake
在make
项目之外使用mingw
构建HelloWorld
。
对于我使用的提升:
include(FindBoost)
find_package(Boost 1.55.0 COMPONENTS system filesystem)
如何在soci
中添加cmake
库?是否有类似的方法来包含soci
?我不知道从哪里开始?
更新
我想更进一步。
我将以下内容添加到我的cmake选项中:
-D CMAKE_MODULE_PATH=D:\Development\Tools\lib\soci-3.2.2\cmake\modules
这是我的CMakeLists.txt
:
find_package(Soci)
if(${SOCI_FOUND})
target_link_libraries(HelloWorld ${SOCI_LIBRARY} ${SOCI_sqlite3_PLUGIN})
else()
message(WARNING "SOCI NOT FOUND")
endif()
我仍然得到SOCI NOT FOUND
,但至少soci
个变量出现在cmake
缓存中。
答案 0 :(得分:0)
这显然很晚,但它对我有用:
target_link_libraries(HelloWorld soci_core soci_mysql)
答案 1 :(得分:0)
我必须承认我为我的队友感到羞耻,因为他们为SOCI库提供了如此糟糕的CMakeLists.txt。为了减轻它们的不良影响,我编写了以下说明,介绍如何在基于CMake的项目中使用SOCI。我在Linux KDE Neon 5.16.5(基于:Ubuntu 18.04 LTS)上执行此操作,但是在Windows上可能只有修复路径。这个probalby将起作用。我不确定100%,因为我只是在要使用SOCI的范围内启动项目。
这显然已经很晚了,但它可能起作用: 我这样构建并安装soci:
cmake "/home/szyk/!-EnergoKod/!-Libs/3rdparty/soci" -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu -DCMAKE_BUILD_TYPE=Release
cmake "/home/szyk/!-EnergoKod/!-Libs/3rdparty/soci" -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu -DCMAKE_BUILD_TYPE=Debug
make -j$(nproc)
sudo make install
我将添加到我的项目CMakeLists.txt:
set(SOCI_SOURCE_DIR "$ENV{HOME}/!-EnergoKod/!-Libs/3rdparty/soci")
set(CMAKE_MODULE_PATH ${SOCI_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
set(CMAKE_MODULE_PATH ${SOCI_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
find_package(Soci)
list(APPEND LIBS ${SOCI_LIBRARY} ${SOCI_sqlite3_PLUGIN})
# Link libraries
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBS})
那会产生漂亮的输出:
Soci found: Looking for plugins
* Plugin mysql not found.
* Plugin odbc not found.
* Plugin postgresql not found.
* Plugin sqlite3 found /usr/local/lib/x86_64-linux-gnu/libsoci_sqlite3.so.
Found Soci: /usr/local/include/soci