2013-02-04 25 views
0

我寫例如圖書館類: FooBar的/ foobar.cpp FooBar的/ foobar.h中 FooBar的/ bar.cpp foobar的/ bar.h調用從不同的文件cmake的

和foobar.h中inlcudes「bar.h」

我想用cmakefiles來建立這個庫。

將一個示例文件是什麼樣子

需要注意的是,這並不具有任何「主」的功能,所以沒有執行,我想創建。我只想建立一個可以包含在不同項目中的圖書館。

我嘗試不同的排列組合

但在每一次嘗試我在FooBar的拋出一個錯誤的位置,我想打電話從bar.cpp的方法? 感謝

+0

因此'g ++ -c FooBar.cpp'直接從命令行編譯,但如果使用cmake,則不能編譯? – molbdnilo

+0

@molbdnilo是的.. – Fraz

回答

3
cmake_minimum_required(VERSION 2.8.10) 
project(FooBar) 
add_library(FooBar FooBar/foobar.cpp FooBar/foobar.h FooBar/bar.cpp FooBar/bar.h) 
# this will create a library called FooBar that will have the code from foobar.cpp and bar.cpp 
1

使用Google的10秒後,我發現this helpful site.

你的Makefile應該是這樣的:

obj/bar.o : FooBar/bar.cpp FooBar/bar.h 
    g++ -c FooBar/bar.cpp -o obj/bar.o 

libbar.a : obj/bar.o 
    ar rcs libbar.a obj/bar.o 

然後你就可以在你的程序只是鏈接搜索libbar.a

+0

這將與bar.cpp bar.h foobar.cpp和foobar.h具有相同的dir級別,或者這是FooBar級別的cmakefile。 – Fraz

+0

我只是根據你提供的名字使用名字。我很少寫makefiles,但我確定路徑基於makefile的位置 – Kaslai