2010-05-26 38 views
2

我有一個小型項目,我只需要boost庫的一部分,特別是boost :: regex。這是我迄今所做的:如何在小型項目中編譯boost庫?

/include 
    /boost 
    /regex 
    /math 
    .. 189 dirs, files, etc. 
/lib 
    /boost-regex 
    c_regex_traits.cpp 
    cpp_regex_traits.cpp 
    .. ~20 .cpp files 
myprog.cpp 

在我Makefile我編譯所有升壓正則表達式.cpp文件一個接一個,生產.obj文件。接下來,我通過編譯myprog.cpp以及來自/lib/boost/regex的所有.obj文件來構建我的項目。

問題是我是否做的一切正確?我的輸出文件的大小相當大(〜3.5Mb),而我的代碼非常小(10行)。

ps。我的編譯器:

$ c++ —version 
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659) 
+0

哪個編譯器和鏈接器? – 2010-05-26 11:35:37

+0

我已經用這個信息擴展了這個問題 – yegor256 2010-05-26 12:14:39

+0

如果您正在進行調試,即使用符號或發佈,即沒有構建符號,您應該提及。由於C++中大型可執行文件/庫的常見原因是調試和動態鏈接符號。 – GrafikRobot 2010-05-26 16:20:41

回答

2

爲什麼不建regex庫作爲靜態庫,並用它在你的代碼的功能通過寫#include <boost/regex.hpp>

這應該不會影響您的應用程序的最終大小,因爲編譯器將僅使用您的應用程序中實際使用的那些函數

另外,如果您不想自己構建它們,則可以在互聯網中找到針對不同平臺的預編譯boost庫。在這種情況下,你需要做的只是採取適當的庫,幷包括適當的頭。