Не могу найти заголовок в 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 из исходного дерева.

Другие вопросы по тегам