2013-02-04 27 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