在cmake-on-windows中包含soci
Include soci in cmake on windows
我在JetBrains CLion中有一个HelloWorld
项目,并设置了boost
,这样我就可以很好地构建它。
我已经设法在HelloWorld
项目之外使用cmake
和make
以及mingw
构建了soci
。
对于我使用的助推:
include(FindBoost)
find_package(Boost 1.55.0 COMPONENTS system filesystem)
如何在cmake
中包含soci
库?是否有包含soci
的类似方法?我不知道从哪里开始?
更新
我想还有一点。
我在cmake选项中添加了以下内容:
-D CMAKE_MODULE_PATH=D:DevelopmentToolslibsoci-3.2.2cmakemodules
这个给我的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
缓存中。
这显然很晚了,但对我来说很有效:
target_link_libraries(HelloWorld soci_core soci_mysql)
我必须承认,我为我的国家伙伴感到羞耻,因为他们为SOCI lib提供了如此糟糕的CMakeLists.txt。为了减轻它们的不良影响,我写了以下关于如何在基于CMake的项目中使用SOCI的内容。我在Linux KDE Neon 5.16.5(基于:Ubuntu 18.04 LTS)上做这件事,但在Windows上可能只有修复路径。这可能会奏效。我不能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
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- g++ 说函数不存在,即使包含正确的标头
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- Visual C++GC接口如何启用它以及要包含哪个库
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 在cmake-on-windows中包含soci