Не могу найти заголовок в Automake
Я изучал GNU autotools (autoconf, automake) с этим примером helloworld. Дерево моего проекта выглядит так:
|-- aclocal.m4
|-- AUTHORS
|-- autom4te.cache
| |-- output.0
| |-- output.1
| |-- requests
| |-- traces.0
| `-- traces.1
|-- autoscan.log
|-- ChangeLog
|-- config.h.in
|-- configure
|-- configure.ac
|-- COPYING
|-- depcomp
|-- include
| |-- hello.hpp
| `-- world.hpp
|-- INSTALL
|-- install-sh
|-- lib
| |-- hello.cpp
| |-- Makefile.am
| |-- Makefile.in
| `-- world.cpp
|-- Makefile.am
|-- Makefile.in
|-- missing
|-- NEWS
|-- README
`-- src
|-- main.cpp
|-- Makefile.am
`-- Makefile.in
Я строю так:
$autoreconf -vfi
$./configure
$make
... и получить ошибку компиляции:
Making all in src make[2]: Entering directory `/home/suddin/package_directory/src' g++ -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp main.cpp:7:21: fatal error: hello.hpp: No such file or directory #include "hello.hpp" ^
Я смог успешно построить, изменив мой #include
директивы к этим:
#include "../include/hello.hpp"
#include "../include/world.hpp"
, но я бы предпочел оставить их такими, какие они есть:
#include "hello.hpp"
#include "world.hpp"
мой src/Makefile.am
файл содержит следующую строку; почему это не решает проблему?
helloWorld_CXXFLAGS=-I../include ##Add path to header file
Для контекста, вот все мои файлы Makefile.am:
===== src / Makefile.am ======================
bin_PROGRAMS=helloworld
helloworld_SOURCES=main.cpp
helloworld_CXXFLAGS= -I../include ## add path to headerfiles
helloworld_LDADD=../lib/libhw.a ## link with static library
===== lib / Makefile.am =======================
noinst_LIBRARIES=libhw.a ## static library which is not to be installed
libhw_a_SOURCES=hello.cpp hello.hpp world.cpp world.hpp
libhw_a_CXXFLAGS=-I../include ## add path to headerfiles
===== Makefile.am (верхний уровень) =================
SUBDIRS=lib src ## processing subdirs in given order
2 ответа
Решение
Опечатка "helloWorld_CXXFLAGS " должна быть "helloworld_CXXFLAGS".
Использование
helloworld_CPPFLAGS = -I$(top_srcdir)/include
скомпилировать все объектные файлы для foo
добавление директории include из исходного дерева.