cmake Could NOT find Boost (missing: xxx problem solving

cmake Could NOT find Boost (missing: xxx problem solving

When compiling solidity on the window, first generate the sln project, and execute cmake according to the official document:

cmake -G "Visual Studio 16 2019" ..

Or additionally specify the boost path without the BOOST_ROOT environment variable. I have the BOOST_ROOT environment variable, so it is not specified, but the problem in the title has nothing to do with it.
Execute the above command directly and report an error. . . :

CMake Error at C:/Program Files/CMake/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find Boost (missing: filesystem unit_test_framework
  program_options system) (found suitable version "1.70.0", minimum required
  is "1.65.0")
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:445 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2145 (find_package_handle_standard_args)
  cmake/EthDependencies.cmake:34 (find_package)
  CMakeLists.txt:42 (include)

From the error message, you can see that cmake has actually found boost, and the version is 1.70.0, which is correct. But why can't I find those libraries?
I checked online and added the [BOOST_LIBRARYDIR] option to specify the path of the library, but I don’t know which level to specify. My actual storage is under [boost_1_70_0\stage64\lib], but I only specified stage64 in [BOOST_LIBRARYDIR]. The result is still the same error. In fact, at this time, I didn’t realize that the path needs to go deeper. I thought this option didn’t work. . .
It is precisely because of this that I encountered a more powerful option: [-DBoost_DEBUG=ON] This is used to print the search process information when using cmake to find boost. After adding this option:

cmake -G "Visual Studio 16 2019" .. -DBoost_DEBUG=ON

The whole process is clear and clear, and the following information will be output (slightly longer, which is the basic information of boost in the current environment that cmake can obtain, and some search paths)

-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19043.
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1466 ] _boost_TEST_VERSIONS = "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"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1467 ] Boost_USE_MULTITHREADED = "ON"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1468 ] Boost_USE_STATIC_LIBS = "ON"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1469 ] Boost_USE_STATIC_RUNTIME = "ON"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1470 ] Boost_ADDITIONAL_VERSIONS = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1471 ] Boost_NO_SYSTEM_PATHS = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1503 ] BOOST_ROOT = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1504 ] ENV{BOOST_ROOT} = "D:\lib\boost_1_70_0"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1505 ] BOOST_INCLUDEDIR = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1506 ] ENV{BOOST_INCLUDEDIR} = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1507 ] BOOST_LIBRARYDIR = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1508 ] ENV{BOOST_LIBRARYDIR} = <unset>
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1596 ] location of version.hpp: D:/lib/boost_1_70_0/boost/version.hpp
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1636 ] Boost_VERSION = "107000"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1637 ] Boost_VERSION_STRING = "1.70.0"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1638 ] Boost_VERSION_MACRO = "107000"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1639 ] Boost_VERSION_MAJOR = "1"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1640 ] Boost_VERSION_MINOR = "70"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1641 ] Boost_VERSION_PATCH = "0"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1642 ] Boost_VERSION_COUNT = "3"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1659 ] Boost_LIB_PREFIX = "lib"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1660 ] Boost_NAMESPACE = "boost"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:793 ] _boost_COMPILER = "-vc142;-vc141;-vc140" (guessed)
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1696 ] _boost_MULTITHREADED = "-mt"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1773 ] _boost_ARCHITECTURE_TAG = "-x64" (detected)
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1777 ] _boost_RELEASE_ABI_TAG = "-s"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1778 ] _boost_DEBUG_ABI_TAG = "-sgd"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1838 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = "D:/lib/boost_1_70_0/lib;D:/lib/boost_1_70_0/stage/lib;D:/lib/boost_1_70_0/lib64-msvc-14.2;D:/lib/boost_1_70_0/lib64-msvc-14.1;D:/lib/boost_1_70_0/lib64-msvc-14.0;D:/lib/boost_1_70_0/lib;D:/lib/boost_1_70_0/../lib;D:/lib/boost_1_70_0/stage/lib;D:/lib/boost_1_70_0/../lib64-msvc-14.2;D:/lib/boost_1_70_0/../lib64-msvc-14.1;D:/lib/boost_1_70_0/../lib64-msvc-14.0;D:/lib/boost_1_70_0/lib64-msvc-14.2;D:/lib/boost_1_70_0/lib64-msvc-14.1;D:/lib/boost_1_70_0/lib64-msvc-14.0;C:/local/boost_1_72_0/lib64-msvc-14.2;C:/local/boost_1_72_0/lib64-msvc-14.1;C:/local/boost_1_72_0/lib64-msvc-14.0;C:/local/boost_1_72/lib64-msvc-14.2;C:/local/boost_1_72/lib64-msvc-14.1;C:/local/boost_1_72/lib64-msvc-14.0;C:/local/boost_1_71_0/lib64-msvc-14.2;C:/local/boost_1_71_0/lib64-msvc-14.1;C:/local/boost_1_71_0/lib64-msvc-14.0;C:/local/boost_1_71/lib64-msvc-14.2;C:/local/boost_1_71/lib64-msvc-14.1;C:/local/boost_1_71/lib64-msvc-14.0;C:/local/boost_1_70_0/lib64-msvc-14.2;C:/local/boost_1_70_0/lib64-msvc-14.1;C:/local/boost_1_70_0/lib64-msvc-14.0;C:/local/boost_1_70/lib64-msvc-14.2;C:/local/boost_1_70/lib64-msvc-14.1;C:/local/boost_1_70/lib64-msvc-14.0;C:/local/boost_1_69_0/lib64-msvc-14.2;C:/local/boost_1_69_0/lib64-msvc-14.1;C:/local/boost_1_69_0/lib64-msvc-14.0;C:/local/boost_1_69/lib64-msvc-14.2;C:/local/boost_1_69/lib64-msvc-14.1;C:/local/boost_1_69/lib64-msvc-14.0;C:/local/boost_1_68_0/lib64-msvc-14.2;C:/local/boost_1_68_0/lib64-msvc-14.1;C:/local/boost_1_68_0/lib64-msvc-14.0;C:/local/boost_1_68/lib64-msvc-14.2;C:/local/boost_1_68/lib64-msvc-14.1;C:/local/boost_1_68/lib64-msvc-14.0;C:/local/boost_1_67_0/lib64-msvc-14.2;C:/local/boost_1_67_0/lib64-msvc-14.1;C:/local/boost_1_67_0/lib64-msvc-14.0;C:/local/boost_1_67/lib64-msvc-14.2;C:/local/boost_1_67/lib64-msvc-14.1;C:/local/boost_1_67/lib64-msvc-14.0;C:/local/boost_1_66_0/lib64-msvc-14.2;C:/local/boost_1_66_0/lib64-msvc-14.1;C:/local/boost_1_66_0/lib64-msvc-14.0;C:/local/boost_1_66/lib64-msvc-14.2;C:/local/boost_1_66/lib64-msvc-14.1;C:/local/boost_1_66/lib64-msvc-14.0;C:/local/boost_1_65_1/lib64-msvc-14.2;C:/local/boost_1_65_1/lib64-msvc-14.1;C:/local/boost_1_65_1/lib64-msvc-14.0;C:/local/boost_1_65_0/lib64-msvc-14.2;C:/local/boost_1_65_0/lib64-msvc-14.1;C:/local/boost_1_65_0/lib64-msvc-14.0;C:/local/boost_1_65/lib64-msvc-14.2;C:/local/boost_1_65/lib64-msvc-14.1;C:/local/boost_1_65/lib64-msvc-14.0;C:/boost/lib64-msvc-14.2;C:/boost/lib64-msvc-14.1;C:/boost/lib64-msvc-14.0;PATHS;C:/boost/lib;C:/boost;/sw/local/lib"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:1839 ] _boost_LIBRARY_SEARCH_DIRS_DEBUG = "D:/lib/boost_1_70_0/lib;D:/lib/boost_1_70_0/stage/lib;D:/lib/boost_1_70_0/lib64-msvc-14.2;D:/lib/boost_1_70_0/lib64-msvc-14.1;D:/lib/boost_1_70_0/lib64-msvc-14.0;D:/lib/boost_1_70_0/lib;D:/lib/boost_1_70_0/../lib;D:/lib/boost_1_70_0/stage/lib;D:/lib/boost_1_70_0/../lib64-msvc-14.2;D:/lib/boost_1_70_0/../lib64-msvc-14.1;D:/lib/boost_1_70_0/../lib64-msvc-14.0;D:/lib/boost_1_70_0/lib64-msvc-14.2;D:/lib/boost_1_70_0/lib64-msvc-14.1;D:/lib/boost_1_70_0/lib64-msvc-14.0;C:/local/boost_1_72_0/lib64-msvc-14.2;C:/local/boost_1_72_0/lib64-msvc-14.1;C:/local/boost_1_72_0/lib64-msvc-14.0;C:/local/boost_1_72/lib64-msvc-14.2;C:/local/boost_1_72/lib64-msvc-14.1;C:/local/boost_1_72/lib64-msvc-14.0;C:/local/boost_1_71_0/lib64-msvc-14.2;C:/local/boost_1_71_0/lib64-msvc-14.1;C:/local/boost_1_71_0/lib64-msvc-14.0;C:/local/boost_1_71/lib64-msvc-14.2;C:/local/boost_1_71/lib64-msvc-14.1;C:/local/boost_1_71/lib64-msvc-14.0;C:/local/boost_1_70_0/lib64-msvc-14.2;C:/local/boost_1_70_0/lib64-msvc-14.1;C:/local/boost_1_70_0/lib64-msvc-14.0;C:/local/boost_1_70/lib64-msvc-14.2;C:/local/boost_1_70/lib64-msvc-14.1;C:/local/boost_1_70/lib64-msvc-14.0;C:/local/boost_1_69_0/lib64-msvc-14.2;C:/local/boost_1_69_0/lib64-msvc-14.1;C:/local/boost_1_69_0/lib64-msvc-14.0;C:/local/boost_1_69/lib64-msvc-14.2;C:/local/boost_1_69/lib64-msvc-14.1;C:/local/boost_1_69/lib64-msvc-14.0;C:/local/boost_1_68_0/lib64-msvc-14.2;C:/local/boost_1_68_0/lib64-msvc-14.1;C:/local/boost_1_68_0/lib64-msvc-14.0;C:/local/boost_1_68/lib64-msvc-14.2;C:/local/boost_1_68/lib64-msvc-14.1;C:/local/boost_1_68/lib64-msvc-14.0;C:/local/boost_1_67_0/lib64-msvc-14.2;C:/local/boost_1_67_0/lib64-msvc-14.1;C:/local/boost_1_67_0/lib64-msvc-14.0;C:/local/boost_1_67/lib64-msvc-14.2;C:/local/boost_1_67/lib64-msvc-14.1;C:/local/boost_1_67/lib64-msvc-14.0;C:/local/boost_1_66_0/lib64-msvc-14.2;C:/local/boost_1_66_0/lib64-msvc-14.1;C:/local/boost_1_66_0/lib64-msvc-14.0;C:/local/boost_1_66/lib64-msvc-14.2;C:/local/boost_1_66/lib64-msvc-14.1;C:/local/boost_1_66/lib64-msvc-14.0;C:/local/boost_1_65_1/lib64-msvc-14.2;C:/local/boost_1_65_1/lib64-msvc-14.1;C:/local/boost_1_65_1/lib64-msvc-14.0;C:/local/boost_1_65_0/lib64-msvc-14.2;C:/local/boost_1_65_0/lib64-msvc-14.1;C:/local/boost_1_65_0/lib64-msvc-14.0;C:/local/boost_1_65/lib64-msvc-14.2;C:/local/boost_1_65/lib64-msvc-14.1;C:/local/boost_1_65/lib64-msvc-14.0;C:/boost/lib64-msvc-14.2;C:/boost/lib64-msvc-14.1;C:/boost/lib64-msvc-14.0;PATHS;C:/boost/lib;C:/boost;/sw/local/lib"
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2024 ] Searching for FILESYSTEM_LIBRARY_RELEASE: libboost_filesystem-vc142-mt-s-x64-1_70;libboost_filesystem-vc142-mt-s-x64;libboost_filesystem-vc142-mt-s;libboost_filesystem-vc141-mt-s-x64-1_70;libboost_filesystem-vc141-mt-s-x64;libboost_filesystem-vc141-mt-s;libboost_filesystem-vc140-mt-s-x64-1_70;libboost_filesystem-vc140-mt-s-x64;libboost_filesystem-vc140-mt-s;libboost_filesystem-mt-s-x64-1_70;libboost_filesystem-mt-s-x64;libboost_filesystem-mt-s;libboost_filesystem-mt;libboost_filesystem
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2079 ] Searching for FILESYSTEM_LIBRARY_DEBUG: libboost_filesystem-vc142-mt-sgd-x64-1_70;libboost_filesystem-vc142-mt-sgd-x64;libboost_filesystem-vc142-mt-sgd;libboost_filesystem-vc141-mt-sgd-x64-1_70;libboost_filesystem-vc141-mt-sgd-x64;libboost_filesystem-vc141-mt-sgd;libboost_filesystem-vc140-mt-sgd-x64-1_70;libboost_filesystem-vc140-mt-sgd-x64;libboost_filesystem-vc140-mt-sgd;libboost_filesystem-mt-sgd-x64-1_70;libboost_filesystem-mt-sgd-x64;libboost_filesystem-mt-sgd;libboost_filesystem-mt;libboost_filesystem
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2024 ] Searching for UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE: libboost_unit_test_framework-vc142-mt-s-x64-1_70;libboost_unit_test_framework-vc142-mt-s-x64;libboost_unit_test_framework-vc142-mt-s;libboost_unit_test_framework-vc141-mt-s-x64-1_70;libboost_unit_test_framework-vc141-mt-s-x64;libboost_unit_test_framework-vc141-mt-s;libboost_unit_test_framework-vc140-mt-s-x64-1_70;libboost_unit_test_framework-vc140-mt-s-x64;libboost_unit_test_framework-vc140-mt-s;libboost_unit_test_framework-mt-s-x64-1_70;libboost_unit_test_framework-mt-s-x64;libboost_unit_test_framework-mt-s;libboost_unit_test_framework-mt;libboost_unit_test_framework
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2079 ] Searching for UNIT_TEST_FRAMEWORK_LIBRARY_DEBUG: libboost_unit_test_framework-vc142-mt-sgd-x64-1_70;libboost_unit_test_framework-vc142-mt-sgd-x64;libboost_unit_test_framework-vc142-mt-sgd;libboost_unit_test_framework-vc141-mt-sgd-x64-1_70;libboost_unit_test_framework-vc141-mt-sgd-x64;libboost_unit_test_framework-vc141-mt-sgd;libboost_unit_test_framework-vc140-mt-sgd-x64-1_70;libboost_unit_test_framework-vc140-mt-sgd-x64;libboost_unit_test_framework-vc140-mt-sgd;libboost_unit_test_framework-mt-sgd-x64-1_70;libboost_unit_test_framework-mt-sgd-x64;libboost_unit_test_framework-mt-sgd;libboost_unit_test_framework-mt;libboost_unit_test_framework
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2024 ] Searching for PROGRAM_OPTIONS_LIBRARY_RELEASE: libboost_program_options-vc142-mt-s-x64-1_70;libboost_program_options-vc142-mt-s-x64;libboost_program_options-vc142-mt-s;libboost_program_options-vc141-mt-s-x64-1_70;libboost_program_options-vc141-mt-s-x64;libboost_program_options-vc141-mt-s;libboost_program_options-vc140-mt-s-x64-1_70;libboost_program_options-vc140-mt-s-x64;libboost_program_options-vc140-mt-s;libboost_program_options-mt-s-x64-1_70;libboost_program_options-mt-s-x64;libboost_program_options-mt-s;libboost_program_options-mt;libboost_program_options
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2079 ] Searching for PROGRAM_OPTIONS_LIBRARY_DEBUG: libboost_program_options-vc142-mt-sgd-x64-1_70;libboost_program_options-vc142-mt-sgd-x64;libboost_program_options-vc142-mt-sgd;libboost_program_options-vc141-mt-sgd-x64-1_70;libboost_program_options-vc141-mt-sgd-x64;libboost_program_options-vc141-mt-sgd;libboost_program_options-vc140-mt-sgd-x64-1_70;libboost_program_options-vc140-mt-sgd-x64;libboost_program_options-vc140-mt-sgd;libboost_program_options-mt-sgd-x64-1_70;libboost_program_options-mt-sgd-x64;libboost_program_options-mt-sgd;libboost_program_options-mt;libboost_program_options
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2024 ] Searching for SYSTEM_LIBRARY_RELEASE: libboost_system-vc142-mt-s-x64-1_70;libboost_system-vc142-mt-s-x64;libboost_system-vc142-mt-s;libboost_system-vc141-mt-s-x64-1_70;libboost_system-vc141-mt-s-x64;libboost_system-vc141-mt-s;libboost_system-vc140-mt-s-x64-1_70;libboost_system-vc140-mt-s-x64;libboost_system-vc140-mt-s;libboost_system-mt-s-x64-1_70;libboost_system-mt-s-x64;libboost_system-mt-s;libboost_system-mt;libboost_system
-- [ C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2079 ] Searching for SYSTEM_LIBRARY_DEBUG: libboost_system-vc142-mt-sgd-x64-1_70;libboost_system-vc142-mt-sgd-x64;libboost_system-vc142-mt-sgd;libboost_system-vc141-mt-sgd-x64-1_70;libboost_system-vc141-mt-sgd-x64;libboost_system-vc141-mt-sgd;libboost_system-vc140-mt-sgd-x64-1_70;libboost_system-vc140-mt-sgd-x64;libboost_system-vc140-mt-sgd;libboost_system-mt-sgd-x64-1_70;libboost_system-mt-sgd-x64;libboost_system-mt-sgd;libboost_system-mt;libboost_system
CMake Error at C:/Program Files/CMake/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find Boost (missing: filesystem unit_test_framework
  program_options system) (found suitable version "1.70.0", minimum required
  is "1.65.0")
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:445 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2145 (find_package_handle_standard_args)
  cmake/EthDependencies.cmake:34 (find_package)
  CMakeLists.txt:42 (include)

From the above output, you can see that the [ BOOST_LIBRARYDIR ] variable is not set in cmake, which causes cmake to find [_boost_LIBRARY_SEARCH_DIRS_RELEASE], which is the search directory of the library, and set some default paths. The path of the library should be directly to the folder where the library is located: [boost_1_70_0\stage64\lib], so directly add the option of [-DBOOST_LIBRARYDIR="path/to/boost/lib"] to point to the actual path of those libraries. Then problem solved!

Later, if you use cmake to find any problems with boost, you can add [ -DBoost_DEBUG=ON ] to analyze the specific cause of the error, which is very practical!

Guess you like

Origin blog.csdn.net/lc315yuhuofei/article/details/117999481