我有一个小项目,需要一些标准库,比如libpng
和boost
。目前我希望该项目可以在我的任何协作者机器上轻松构建(OSX / Unix / Linux ),但我现在不关心打包或安装它。我的问题是,是否有一种简单的方法可以编写“自制的”Makefile
或configure
文件,可以在特定的* nix系统上自动查找和使用这些库?
我知道Autoconf
和CMake
是为此类任务设计的工具,但我和我的合作者不想为这么小的项目而烦恼,至少现在不是。
我想到的另一种可能性是pkg-config
。这是推荐的方法吗?我目前有两个问题:(1)找不到所有库,(比如boost
,讨论过here,here和here),以及(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
文件。
答案 0 :(得分:1)
pkg-config
的目的或多或少就是为此而设计的。它旨在取代X-config
脚本/等。许多项目在此之前都是自己写的。
我不知道CMake
,但我相信autotools只是在内部使用pkg-config
。
对于pkg-config
找不到的东西(并且没有自己的X-config
),你唯一可以做的就是使用合理的默认值并允许人们覆盖它们(你可以测试一些作为后备默认值的常见替代方案,但您仍需要允许用户超越。