2016-04-30 42 views
0

我對C++很新穎。我想知道,在編譯或執行C++代碼時,通常認爲這是一種整潔的方式來爲各種文件/庫提供路徑。在C++編譯時提供更好的方式提供庫的路徑

例如: 我在系統的某個位置安裝了Boost庫。讓我們把它叫做X 爲了執行什麼我在

c++ -I LongpathWhichisX/to/boost_1_60_0 example.cpp -o example 

同樣輸入文件在執行的代碼輸入,也長路徑。

有沒有更好的方法來解決它。是否可以創建環境變量讓Y引用路徑'X'。我們可以使用下面的命令來編譯代碼

c++ -I Y/to/boost_1_60_0 example.cpp -o example 

回答

1

最好的方法是使用構建工具。例如,您可以使用Make。您可以在Makefile中定義所有包含路徑(和其他選項)。在控制檯中,您只需撥打make即可構建您的項目或類似make run的項目來運行您的項目。

0

通常的方法是讓一個Makefile,你可以指定所有需要的路徑和編譯適當的變量選擇。

如果你不想/需要一個Makefile,而是想從命令行運行編譯器,那麼你可以使用CPATH環境變量來指定包含文件的冒號分隔的路徑列表。

0

這是一個廣泛的問題,但其他答案突出顯示了最重要的一步。學習像make這樣的構建工具是非常重要的,因爲它們可以使開發過程中的項目構建變得更容易,而其他人可以在後期構建項目。在現代編程時代,儘管這還不夠。如果您正在使用Boost(針對許多平臺)之類的東西,那麼您可能還希望讓您的構建跨平臺。爲此,您可以使用cmakeautotools,它們都具有腳本,可以更容易地找到Boost庫(和其他庫)。

在我看來,任何其他構建系統都是一種痛苦,是Linux發行版維護者的禍根。 CMake曾經是這樣的,但它現在已經被廣泛接受。 CMake的目標是更好地(在我看來)跨操作系統(Windows和Unix)構建跨平臺項目,因爲它試圖在每個平臺上提供本地構建系統(例如:Windows中的Visual Studio,Make all all Unices,XCode on蘋果電腦)。自動工具的目標是更深入地研究Unix環境(你在Windows上的時間比較困難,但是你可以將嵌入式Unix系統定位到高端的Unix服務器系統,並具有更大的靈活性)。

注意: Autotools支持交叉編譯在幾乎所有其他解決方案的支持方面都非常出色。當我下載需要爲Arm Linux交叉編譯的東西時,我總是畏縮,它使用一些奇怪的構建系統。有趣的是,提升就是其中之一。

這是一個漫長的回答。總之,學習本地開發的構建系統至關重要。這是你的技能組合的一部分,除非你有這個技能,否則你無法真正爲開源項目甚至開發閉源項目的僱主做出貢獻。