когда я использую CMakeLists.txt с:
find_library(cryptoppV libcryptopp.a)
target_link_libraries(${PROJenter code hereECT_NAME} ${cryptoppV})
, тогда я могу найти библиотеку в / usr / local / lib и сделать программу на C ++ правильной иполучил правильный результат.
но когда я заменяю его на:
-- find_library(cryptoppV libcryptopp.a)
target_link_libraries(${PROJECT_NAME} cryptopp)
, тогда я получаю сообщение об ошибке:
ld: library not found for -lcryptopp
почему cmake не связывает / usr / local / lib с помощьюдефолт?я сделал что-то не так?
- добавлено aijinsong 7 октября 2018 г. 6:37
Я в замешательстве.когда CMakeLists.txt был:
set(SOURCE_FILES main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
find_package(Boost 1.58 REQUIRED thread)
target_link_libraries(${PROJECT_NAME} Boost::thread)
find_library(cryptoppV libcryptopp.a)
target_link_libraries(${PROJECT_NAME} ${cryptoppV})
, компилятор может найти cryptopp / sha.h.но когда CMakeLists.txt был:
set(SOURCE_FILES main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
## find_package(Boost 1.58 REQUIRED thread)
## target_link_libraries(${PROJECT_NAME} Boost::thread)
find_library(cryptoppV libcryptopp.a)
target_link_libraries(${PROJECT_NAME} ${cryptoppV})
сообщение об ошибке было:
fatal error: 'cryptopp/sha.h' file not found
#include <cryptopp/sha.h>
, когда CMakeLists.txt было:
set(SOURCE_FILES main.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
find_package(Boost 1.58 REQUIRED thread)
## target_link_libraries(${PROJECT_NAME} Boost::thread)
find_library(cryptoppV libcryptopp.a)
target_link_libraries(${PROJECT_NAME} ${cryptoppV})
сообщение об ошибкебыло еще:
fatal error: 'cryptopp/sha.h' file not found
#include <cryptopp/sha.h>
почему я использую cryptopp, который cmake попросил меня связать с библиотекой Boost :: thread?я в растерянности.
- добавлено aijinsong 7 октября 2018 11:56 AM
И если я использую g++ main.cpp -o main -lcryptopp
, я могу получитьправильный результат.Это показывает, что библиотека cryptopp установлена правильно, и g ++ может найти библиотеку.почему, когда я делаю это с помощью make, она не может найти библиотеку?
- добавить для запуска KamilCuk
- добавьте aijinsong 7 октября 2018 года 15:27
когда я сделаю это, сделав VERBOSE = 1, я получил следующее сообщение:
cd /Users/aijinsong/Documents/projects/com.aijs.cxx/bolochain/src && /usr/local/Cellar/cmake/3.12.3/bin/cmake -E cmake_link_script CMakeFiles/bolochain.dir/link.txt --verbose=1
и текст в link.txt: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/bolochain.dir/main.cpp.o -o bolochain /usr/local/lib/libboost_thread-mt.dylib -lcryptopp /usr/local/lib/libboost_chrono-mt.dylib /usr/local/lib/libboost_system-mt.dylib /usr/local/lib/libboost_date_time-mt.dylib /usr/local/lib/libboost_atomic-mt.dylib
эта команда вызывает ссылку сбоя, но когда я редактирую ее, как показано ниже, команда команды c ++ link очень хорошо обрабатывает: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/bolochain.dir/main.cpp.o -o bolochain /usr/local/lib/libboost_thread-mt.dylib -lcryptopp /usr/local/lib/libboost_chrono-mt.dylib /usr/local/lib/libboost_system-mt.dylib /usr/local/lib/libboost_date_time-mt.dylib /usr/local/lib/libboost_atomic-mt.dylib
просто удалите: -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
Я все еще работаю над этой проблемой.
- добавьте для KamilCuk end