如何在不使用Autoconf或Cmake的情况下在系统上查找/使用库?

时间:2014-11-06 14:14:28

标签: boost makefile cmake configure autoconf

我有一个小项目,需要一些标准库,比如libpngboost。目前我希望该项目可以在我的任何协作者机器上轻松构建(OSX / Unix / Linux ),但我现在不关心打包或安装它。我的问题是,是否有一种简单的方法可以编写“自制的”Makefileconfigure文件,可以在特定的* nix系统上自动查找和使用这些库?

我知道AutoconfCMake是为此类任务设计的工具,但我和我的合作者不想为这么小的项目而烦恼,至少现在不是。

我想到的另一种可能性是pkg-config。这是推荐的方法吗?我目前有两个问题:(1)找不到所有库,(比如boost,讨论过hereherehere),以及(2)没有所有系统似乎都安装了pkg-config

我希望有的解决方案是编写一个如下所示的Makefile

INCpng = $(shell command retrieves "-I/path/to/png.h")
LIBpng = $(shell command retrieves "-L/path/to/libpng.so -lpng")

INCboost = $(shell command retrieves "-I/path/to/boost")
LIBpng = $(shell command retrieves "-L/path/to/libboost.so -lboost")

SomeFile: SomeFile.cc
    $(CXX) $(CXXFLAGS) $(INCpng) $(INCboost) $(LIBpng) $(LIBboost) -o $@ $<

我也愿意写一个不复杂的configure文件。

1 个答案:

答案 0 :(得分:1)

pkg-config的目的或多或少就是为此而设计的。它旨在取代X-config脚本/等。许多项目在此之前都是自己写的。

我不知道CMake,但我相信autotools只是在内部使用pkg-config

对于pkg-config找不到的东西(并且没有自己的X-config),你唯一可以做的就是使用合理的默认值并允许人们覆盖它们(你可以测试一些作为后备默认值的常见替代方案,但您仍需要允许用户超越。