簡體   English   中英

在Makefile中查找Boost庫

[英]Find Boost libraries in Makefile

在構建過程中包含Boost庫的最佳實踐是什么?

為了說明,假設我們的項目使用了Boost的正則表達式,並編譯如下:

g++ -lboost_regex -o main main.cpp

...這意味着我可以編寫一個包含以下內容的Makefile:

LDFLAGS+=-lboost_regex

不幸的是,這不適用於我的系統:

$ make main
ld: library not found for -lboost_regex
collect2: error: ld returned 1 exit status

這是可以理解的,因為我沒有指定庫路徑,並且Boost安裝在編譯器找不到它的位置。

顯然,我不想在我的Makefile中對該路徑進行硬編碼。 否則,項目無法在其他計算機上構建。

一種解決方案是設置LD_LIBRARY_PATH不鼓勵這樣做

普通庫的“真正”解決方案是使用pkg-config ,例如:

LDFLAGS+=$(shell pkg-config --libs sqlite3)

...解決了-L/path/to/sqlite/lib -lsqlite3

不幸的是, Boost仍然不支持pkg-config

這讓我處於兩難境地。 似乎沒有一種確定Boost庫安裝路徑的通用方法。 其他項目如何處理這個問題?

(有人建議使用環境變量BOOST_ROOT但這似乎並不普遍存在,你需要在其中一個bashrc / profile文件中手動設置它。)

因為我是建議使用BOOST_ROOT ,所以我也可以把它作為答案。

背景:如果未在boosts安裝根目錄內執行,則Boost的bjam構建程序需要BOOST_ROOT環境變量。
有了這個想法,人們可能還會“依賴”它,即當make被調用時始終將它作為完整的環境變量調用,或者只是在會話/命令期間設置它,如BOOST_ROOT=/foo/bar/boost make

暫無
暫無

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

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