簡體   English   中英

包括帶有 clang CMake 的 Boost 構建

[英]Include Boost build with clang CMake

我正在嘗試使用 CMake 為我的項目添加提升,但是我收到了 Boost Not Found 錯誤。 CMake output 顯示正確的庫名稱和路徑,但仍然找不到。
也許我的問題在於庫的非標准路徑,但我希望能夠將庫放在對我方便的地方。
提升 1.74
視覺工作室 2019
CMake 3.19

我的 CMakeList.txt

cmake_minimum_required (VERSION 3.19)

set(BOOST_ROOT "E:/boost_1_74_0")
set(ENV{BOOST_ROOT} "E:/boost_1_74_0")
set(Boost_DIR "E:/boost_1_74_0")
set(BOOST_LIBRARYDIR "E:/boost_1_74_0/stage/lib")
set(ENV{BOOST_LIBRARYDIR} "E:/boost_1_74_0/stage/lib")
set(BOOST_INCLUDEDIR "E:/boost_1_74_0")
set(Boost_NO_SYSTEM_PATHS TRUE)
set(Boost_USE_STATIC_RUNTIME FALSE)
set(Boost_USE_STATIC_LIBS TRUE)
set(Boost_USE_MULTITHREADED TRUE)
set(THREAD_LIBRARY_DEBUG TRUE)
set(Boost_USE_DEBUG_RUNTIME FALSE)
set(Boost_COMPILER "-clang11")
set(Boost_DEBUG 1) 

find_package(Boost COMPONENTS data_time)

if(NOT Boost_FOUND)
    message(FATAL_ERROR "Boost Not found")
endif()

include_directories (${Boost_INCLUDE_DIR})

add_executable (main "src/main/main.cpp")

target_include_directories(main PUBLIC ${Boost_INCLUDE_DIRS}) 

target_link_libraries(main ${Boost_LIBRARIES})

CMake output

 CMake generation started for configuration: 'x64-Clang-Release'. Environment settings: CXXFLAGS=-m64 -fdiagnostics-absolute-paths CFLAGS=-m64 -fdiagnostics-absolute-paths Command line: "cmd.exe" /c "%SYSTEMROOT%\System32\chcp.com 65001 >NUL && "D:\VISUAL STUDIO\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja" -DCMAKE_BUILD_TYPE:STRING="Release" -DCMAKE_INSTALL_PREFIX:PATH="D:\PetProject\BoostAsioReseller\out\install\x64-Clang-Release" -DCMAKE_C_COMPILER:FILEPATH="D:/VISUAL STUDIO/VC/Tools/Llvm/x64/bin/clang-cl.exe" -DCMAKE_CXX_COMPILER:FILEPATH="D:/VISUAL STUDIO/VC/Tools/Llvm/x64/bin/clang-cl.exe" -DCMAKE_MAKE_PROGRAM="D:\VISUAL STUDIO\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "D:\PetProject\BoostAsioReseller" 2>&1" 1> Working directory: D:\PetProject\BoostAsioReseller\out\build\x64-Clang-Release 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1657 ] _boost_TEST_VERSIONS = "1.75.0;1.75;1.74.0;1.74;1.73.0;1.73;1.72.0;1.72;1.71.0;1.71;1.70.0;1.70;1.69.0;1.69;1.68.0;1.68;1.67.0;1.67;1.66.0;1.66;1.65.1;1.65.0;1.65;1.64.0;1.64;1.63.0;1.63;1.62.0;1.62;1.61.0;1.61;1.60.0;1.60;1.59.0;1.59;1.58.0;1.58;1.57.0;1.57;1.56.0;1.56;1.55.0;1.55;1.54.0;1.54;1.53.0;1.53;1.52.0;1.52;1.51.0;1.51;1.50.0;1.50;1.49.0;1.49;1.48.0;1.48;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.0;1.45;1.44.0;1.44;1.43.0;1.43;1.42.0;1.42;1.41.0;1.41;1.40.0;1.40;1.39.0;1.39;1.38.0;1.38;1.37.0;1.37;1.36.1;1.36.0;1.36;1.35.1;1.35.0;1.35;1.34.1;1.34.0;1.34;1.33.1;1.33.0;1.33" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1658 ] Boost_USE_MULTITHREADED = "TRUE" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1659 ] Boost_USE_STATIC_LIBS = "TRUE" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1660 ] Boost_USE_STATIC_RUNTIME = "FALSE" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1661 ] Boost_ADDITIONAL_VERSIONS = <unset> 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1662 ] Boost_NO_SYSTEM_PATHS = "TRUE" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1694 ] BOOST_ROOT = "E:/boost_1_74_0" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1695 ] ENV{BOOST_ROOT} = "E:/boost_1_74_0" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1696 ] BOOST_INCLUDEDIR = "E:/boost_1_74_0" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1697 ] ENV{BOOST_INCLUDEDIR} = <unset> 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1698 ] BOOST_LIBRARYDIR = "E:/boost_1_74_0/stage/lib" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1699 ] ENV{BOOST_LIBRARYDIR} = "E:/boost_1_74_0/stage/lib" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1787 ] location of version.hpp: E:/boost_1_74_0/boost/version.hpp 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1827 ] Boost_VERSION = "1.74.0" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1828 ] Boost_VERSION_STRING = "1.74.0" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1829 ] Boost_VERSION_MACRO = "107400" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1830 ] Boost_VERSION_MAJOR = "1" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1831 ] Boost_VERSION_MINOR = "74" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1832 ] Boost_VERSION_PATCH = "0" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1833 ] Boost_VERSION_COUNT = "3" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1857 ] Boost_LIB_PREFIX = "lib" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1858 ] Boost_NAMESPACE = "boost" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1880 ] _boost_COMPILER = "-clang11" (user-specified via Boost_COMPILER) 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1894 ] _boost_MULTITHREADED = "-mt" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1972 ] _boost_ARCHITECTURE_TAG = "-x64" (detected) 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1976 ] _boost_RELEASE_ABI_TAG = "-" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:1977 ] _boost_DEBUG_ABI_TAG = "-d" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:2037 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = "E:/boost_1_74_0/stage/lib;E:/boost_1_74_0/lib;E:/boost_1_74_0/stage/lib;E:/boost_1_74_0/lib;E:/boost_1_74_0/../lib;E:/boost_1_74_0/stage/lib;NO_CMAKE_SYSTEM_PATH;NO_SYSTEM_ENVIRONMENT_PATH" 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:2038 ] _boost_LIBRARY_SEARCH_DIRS_DEBUG = "E:/boost_1_74_0/stage/lib;E:/boost_1_74_0/lib;E:/boost_1_74_0/stage/lib;E:/boost_1_74_0/lib;E:/boost_1_74_0/../lib;E:/boost_1_74_0/stage/lib;NO_CMAKE_SYSTEM_PATH;NO_SYSTEM_ENVIRONMENT_PATH" 1> [CMake] CMake Warning at D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:2185 (message): 1> [CMake] No header defined for data_time; skipping header check (note: header-only 1> [CMake] libraries have no designated component) 1> [CMake] Call Stack (most recent call first): 1> [CMake] BoostAsioReseller/CMakeLists.txt:22 (find_package) 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:2223 ] Searching for DATA_TIME_LIBRARY_RELEASE: libboost_data_time-clang11-mt-x64-1_74;libboost_data_time-clang11-mt-x64;libboost_data_time-clang11-mt;libboost_data_time-mt-x64-1_74;libboost_data_time-mt-x64;libboost_data_time-mt;libboost_data_time-mt;libboost_data_time 1> [CMake] -- [ D:/Visual Studio/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.19/Modules/FindBoost.cmake:2278 ] Searching for DATA_TIME_LIBRARY_DEBUG: libboost_data_time-clang11-mt-d-x64-1_74;libboost_data_time-clang11-mt-d-x64;libboost_data_time-clang11-mt-d;libboost_data_time-mt-d-x64-1_74;libboost_data_time-mt-d-x64;libboost_data_time-mt-d;libboost_data_time-mt;libboost_data_time 1> [CMake] -- Could NOT find Boost (missing: data_time) (found version "1.74.0") 1> [CMake] CMake Error at BoostAsioReseller/CMakeLists.txt:25 (message): 1> [CMake] Boost Not found 1> [CMake] 1> [CMake] 1> [CMake] -- Configuring incomplete, errors occurred!

我在目錄中的庫在此處輸入圖像描述

感謝drescherjmvre ,我設法將 boost 與此代碼聯系起來。

這段代碼不是通用的,取決於你如何構建 boost。 BOOST_ROOT 之后的變量可能不同。

cmake_minimum_required (VERSION 3.19)

set(BOOST_ROOT "E:/boost_1_74_0/stage")
set(Boost_USE_STATIC_RUNTIME FALSE)
set(Boost_USE_STATIC_LIBS TRUE)
set(Boost_USE_MULTITHREADED TRUE)
set(THREAD_LIBRARY_DEBUG TRUE)
set(Boost_USE_DEBUG_RUNTIME FALSE)
set(Boost_COMPILER "-clang11")

find_package(Boost COMPONENTS system)

if(NOT Boost_FOUND)
    message(FATAL_ERROR "Boost Not found")
endif()

include_directories (${Boost_INCLUDE_DIR})

add_executable (main "src/main/main.cpp")

target_include_directories(main PUBLIC ${Boost_INCLUDE_DIRS}) 

target_link_libraries(main ${Boost_LIBRARIES})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM