2012-08-22 44 views
0

我正在編寫一個C++程序,我希望使用Boost的一些功能(不僅僅是頭文件模塊),還有我以源代碼形式發佈的程序。我希望它可以在儘可能多的操作系統上工作,但爲了具體而採取Linux。 (我更習慣Windows,但在那裏我可以退回到發佈二進制文件,只要Boost可以靜態鏈接。)使用Boost分發和編譯C++程序

現在,我出貨一個簡單的手寫makefile,所以程序編譯該程序只是make。但是,當您將Boost帶入方程時,我會理解這一點不再有效,因爲您無法知道用戶機器上可用的版本(如果有),或者標題和庫文件將位於何處,而且應該使用諸如自動工具或CMake之類的構建系統。

這是正確的嗎?如果是這樣,如果最高優先級是可靠性(即最大化在用戶試圖編譯和安裝程序時它將工作的可能性),應該使用哪個構建系統?

(我還計劃使用GMP,如果有差別。)

+2

,我不能回答你的問題,因爲我不知道很多的工具。但我知道cmake,我可以告訴你CMake會適合你的需求,但我不能告訴你這個工具是否會「最大化可能性」。 –

+2

我建議你也使用CMake。 – arrowd

回答

3

編譯使用升壓靜態是CMake的非常簡單的程序。使用FindBoost模塊爲您處理。

一個例子的CMakeLists.txt文件使用program_options靜態的程序:

cmake_minimum_required(VERSION 2.8) 
project(myproj) 

set(Boost_USE_STATIC_LIBS ON) 
find_package(Boost 1.40 REQUIRED COMPONENTS program_options) 
include_directories(${Boost_INCLUDE_DIRS}) 

add_executable(myexe source_file.cpp) 
target_link_libraries(myexe ${Boost_LIBRARIES})