2016-07-05 5 views
0

私はかなり大きい既存のプロジェクトにいくつかの変更を加えています。そのため、自動ツールで構築されています。変更にはIbexライブラリが含まれているので、ソースファイルの1つに#include "ibex.h"を追加しました。ライブラリを追加する

  • /usr/local/lib/libibex.a /usr/local/include/ibex/ibex.h
  • /:ライブラリが適切に自分のシステムにインストールされている、私は、次のファイルを持っていますUSR /ローカル/共有/ pkgconfig/ibex.pc pkgconfigコマンドの

結果:オリジナルMakefile.amはcompilに対応

$ pkg-config --libs ibex 
-L/usr/local/lib -libex -lprim -lClp -lCoinUtils -lm 
$ pkg-config --cflags ibex 
-frounding-math -ffloat-store -I/usr/local/include -I/usr/local/include/ibex 

私はアイベックスを使用するために取得したいユニット、以下のとおりである。

noinst_LTLIBRARIES = liblrasolver.la 

AM_CPPFLAGS=$(config_includedirs) 

liblrasolver_la_SOURCES = LAVar.h LAVar.C Delta.h Delta.C LRASolver.h LRASolver.C LAArray.h LAArray.C LARow.h LARow.C LAColumn.h LAColumn.C 

if WANT_LIBRARY 
include_HEADERS = Delta.h LAArray.h LAColumn.h LARow.h LAVar.h LRASolver.h 
endif 

私はそれをこのように変更:

noinst_LTLIBRARIES = liblrasolver.la 

AM_CPPFLAGS=$(config_includedirs) `pkg-config --cflags ibex` 
AM_LDFLAGS=`pkg-config --libs ibex` -lblas -llapack 

liblrasolver_la_SOURCES = LAVar.h LAVar.C Delta.h Delta.C LRASolver.h LRASolver.C LAArray.h LAArray.C LARow.h LARow.C LAColumn.h LAColumn.C 

if WANT_LIBRARY 
include_HEADERS = Delta.h LAArray.h LAColumn.h LARow.h LAVar.h LRASolver.h 
endif 

はコンパイルするアイベックスソースと一緒に提供される汎用のMakefileを調べて、この修正に来ましたアイベックスプロジェクト:

SRCS=$(wildcard *.cpp) 
BINS=$(SRCS:.cpp=) 

CXXFLAGS := $(shell pkg-config --cflags ibex) 
LIBS  := $(shell pkg-config --libs ibex) -lblas -llapack 

ifeq ($(DEBUG), yes) 
CXXFLAGS := $(CXXFLAGS) -O0 -g -pg -Wall -frounding-math 
else 
CXXFLAGS := $(CXXFLAGS) -O3 -DNDEBUG -Wno-deprecated -frounding-math 
endif 

all: $(BINS) 

% : %.cpp 
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o [email protected] $< $(LIBS) 

clean: 
    rm -f $(BINS) 

[OK]を、autoreconfは作品だけでなく、./configureを(その出力は、私はすでに疑わしい見つけた「アイベックス」を語ることはありませんが)。しかし、失敗は失敗する。ヘッダーが見つかりません

答えて

0

pkg-configは正しく使用されていません。 PKG_CHECK_MODULESマクロを使用してください(参照:https://autotools.io/pkgconfig/pkg_check_modules.html参照)。

ライブラリはldflagsではないため、AM_LDFLAGSも間違って使用しています。 _LIBADDを使用してください。

関連する問題