簡體   English   中英

無法在MacOS Mojave上鏈接C ++ 11的庫

[英]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.

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