[英]Can't link libraries for C++11 on MacOS Mojave
我無法將boost / openssl鏈接到CLion中的C ++項目。 我試圖通過單擊build在CLion中構建程序,盡管我也一直嘗試使用g ++手動進行編譯,但無濟於事。 我的CMakeLists.txt看起來像:
cmake_minimum_required(VERSION 3.12)
project(FinalProject)
set(CMAKE_CXX_STANDARD 11)
# Set OpenSSL dir, this should be default on linux/mac
set(OPENSSL_INCLUDE_DIR, /usr/local/opt/openssl/bin/openssl)
# Get OpenSSL
find_package(openssl REQUIRED)
# Get cppRestSDK
find_package(cpprestsdk REQUIRED)
find_package(boost REQUIRED)
# Compile + Link
add_executable(FinalProject main.cpp)
target_link_libraries(FinalProject cpprestsdk::cpprest)
我嘗試改變
target_link_libraries(FinalProject cpprestsdk::cpprest)
至
target_link_libraries(FinalProject boost ssl cpprestsdk::cpprest)
以及許多其他變體來確保加載我正在使用的所有依賴項(OpenSSL,cpprestsdk和Boost),但是隨着不斷出現各種錯誤,我似乎無法使所有這些依賴項正常工作:
"library not found for "-lssl", "-lboost", "-lopenssl"
我使用自制軟件安裝了openssl,但是當我運行homebrew link openssl
我得到: "Refusing to link macOS-provided software: openssl"
並添加--force
會給我同樣的錯誤消息。
僅使用target_link_libraries(FinalProject cpprestsdk::cpprest)
運行CMakeLists.txt可得到:
Undefined symbols for architecture x86_64:
"boost::system::detail::system_category_ncx()", referenced from:
boost::system::system_category() in main.cpp.o
"boost::system::detail::generic_category_ncx()", referenced from:
boost::system::generic_category() in main.cpp.o
ld: symbol(s) not found for architecture x86_64
但我不知道為什么,因為Boost 似乎可以很好地加載(當我使用target_link_libraries(FinalProject PRIVATE cpprestsdk::cpprest boost)
構建時,收到消息“ Boost Version 1.68”,但是我也得到了錯誤ld: library not found for -lboost
)。
在我的main.cpp(僅包含代碼的文件)中,包括:
#include <iostream>
#include <string>
#include <cpprest/http_client.h>
#include <cpprest/filestream.h>
#include "openssl/bio.h"
#include "openssl/ssl.h"
#include "openssl/err.h"
有人知道我想念什么嗎? 我猜這在我的CMakeLists.txt中很簡單,但是不確定。 我唯一的OpenSSL版本是1.0.2q,我在MacOS Mojave上。 在終端中運行openssl確實可以,因此它似乎在我的PATH中。 這里真的很茫然,因為我不確定此時出了什么問題。 任何幫助表示贊賞!
指定要從增強。 在這里,您需要“系統”:
find_package(Boost REQUIRED system)
Boost設置變量以在以下情況提供幫助:
target_link_libraries(FinalProject ssl cpprestsdk::cpprest ${Boost_SYSTEM_LIBRARY})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.