如何将Boost作为CMake项目中的Git子模块包含在C++项目中



我正试图编译一个CMake项目,但一直收到关于";找不到Boost";。我也尝试过设置BOOST_ROOT,而改为执行find_package。奇怪的是,我很确定这在Mac上有效,但在Windows上无效?

项目布局(外部git子模块位于deps/(:

>dir
Volume in drive C has no label.
Volume Serial Number is 8235-910C
Directory of C:UsersBrandonDesktopredis-j2534-rpc
11/05/2021  12:06 AM    <DIR>          .
11/05/2021  12:06 AM    <DIR>          ..
11/04/2021  11:21 PM                22 .gitignore
11/04/2021  11:21 PM               825 .gitmodules
11/05/2021  12:28 AM             1,318 CMakeLists.txt
11/04/2021  11:21 PM    <DIR>          deps
11/04/2021  11:21 PM             1,176 README.md
11/04/2021  11:21 PM    <DIR>          src
11/05/2021  12:28 AM    <DIR>          Win32
4 File(s)          3,341 bytes
5 Dir(s)  274,146,738,176 bytes free

已填充证明deps:

>dir deps
Volume in drive C has no label.
Volume Serial Number is 8235-910C
Directory of C:UsersBrandonDesktopredis-j2534-rpcdeps
11/04/2021  11:21 PM    <DIR>          .
11/04/2021  11:21 PM    <DIR>          ..
11/04/2021  11:26 PM    <DIR>          boost
11/04/2021  11:54 PM    <DIR>          dlfcn-win32
11/04/2021  11:54 PM    <DIR>          hiredis
11/04/2021  11:54 PM    <DIR>          libconfig
11/04/2021  11:54 PM    <DIR>          msgpack-c
0 File(s)              0 bytes
7 Dir(s)  274,135,240,704 bytes free

CMakeLists.txt:

cmake_minimum_required(VERSION 3.5.1)
project(redis-rpc)
set(CMAKE_CXX_STANDARD 11)
#set(CMAKE_OSX_ARCHITECTURES "x86_64")
# variables
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
set(BUILD_TESTS OFF CACHE BOOL "")
set(DISABLE_TESTS ON CACHE BOOL "")
set(BUILD_EXAMPLES OFF CACHE BOOL "")
# dependencies
add_subdirectory("deps/boost")
add_subdirectory("deps/dlfcn-win32")
add_subdirectory("deps/libconfig")
add_subdirectory("deps/hiredis")
add_subdirectory("deps/msgpack-c")
include_directories("deps/msgpack-c/include")
include_directories("deps/libconfig/lib")
# vehicle
add_executable(
vehicle
src/vehicle.cc
src/redis.cc
src/convert.cc
)
target_link_libraries(
vehicle
hiredis
msgpackc-cxx
config
#libconfig
#shlwapi
dl
)
# tester
add_library(
tester
SHARED
src/tester.cc
src/redis.cc
src/convert.cc
)
target_link_libraries(
tester
hiredis
msgpackc-cxx
config
#libconfig
#shlwapi
dl
)

错误:

cmake -A Win32 -S . -B "Win32" && cmake --build Win32 --config Debug
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19042.
-- Boost: static libraries, shared runtime, MPI OFF, Python OFF, testing OFF
-- Boost.Context: architecture i386, binary format pe, ABI ms, assembler masm, suffix .asm, implementation fcontext
-- Boost.Fiber: NUMA target OS is windows
-- Boost.Iostreams: ZLIB OFF, BZip2 OFF, LZMA OFF, Zstd OFF
-- Boost.Locale: iconv OFF, ICU OFF, POSIX OFF, std ON, winapi ON
-- Boost.Log: Message compiler mc.exe not found, event log support will be disabled.
-- Boost.Math: standalone mode OFF
-- Boost.Stacktrace: noop ON, backtrace OFF, addr2line OFF, basic ON, windbg ON, windbg_cached ON
-- Boost.Thread: threading API is win32
Detected version: 1.0.3
-- Dynamically linking with Boost
CMake Error at C:/Program Files/CMake/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Boost (missing: Boost_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.21/Modules/FindBoost.cmake:2360 (find_package_handle_standard_args)
deps/msgpack-c/CMakeLists.txt:103 (FIND_PACKAGE)

-- Configuring incomplete, errors occurred!
See also "C:/Users/Brandon/Desktop/redis-j2534-rpc/Win32/CMakeFiles/CMakeOutput.log".

msgpack-c不喜欢add_subdirectory("deps/boost-cmake")

它需要手动set(Boost_INCLUDE_DIR "C:/Users/Brandon/Desktop/project/Win32/_deps/boost-src")

最新更新