2016-12-14 6 views
0

Моя компания хранит определенные файлы заголовков и библиотеки в нестандартном (но не меняющемся) месте.Autotools AM_CPPFLAGS (и другие) игнорируются?

Я пытаюсь добавить путь заголовка к сборке. Если я определяю переменную среды CPPFLAGS, я могу добавить пути поиска заголовка и найти заголовки. Но все попытки установить путь поиска изнутри configure.ac или src/Makefile.am не удались.

В Src/Makefile.am Я попытался

AM_CPPFLAGS = -I/path/to/headers 

Но заголовки не найдены. Я попытался установить CPPFLAGS в configure.ac и Makefile.am, и это не сработает. Я пытался

AC_SUBST(CPPFLAGS, ['-I/path/to/headers']) 

и без одинарные кавычки, также не повезло

Я пытался в ИПВ/Makefile.am

main_CPPFLAGS = -I/path/to/headers 

Я бы предпочел не устанавливать переменная среды. Это потребует дополнительной инструкции и дополнительного шага к последовательности сборки (и документации). Любая идея, что мне не хватает?

Добавление

Я забыл упомянуть, что я кросс-компиляцию на MacOS для кронштейна хоста (не IOS).

Вот санированная версия src/Makefile.am. На данный момент у него есть несколько возможностей. Ни один из них не получает флаг -I компилятору. Установка переменной среды CPPFLAGS делает получает флаг -I компилятору.

SUBDIRS = . 
bin_PROGRAMS = main 
main_SOURCES = first.h second.h main.cpp 
main_LDADD = -lone -ltwo 
main_CPPFLAGS = -I/path/to/headers 
AM_CPPFLAGS = -I/path/to/headers 
INCLUDES = -I/path/to/headers 
+0

Ваш 'AM_CPPFLAGS = -I/путь/to/headers' правильный, он должен передать этот параметр -I вашему компилятору. Единственная причина, по которой я могу думать, что это не так, когда ваша версия automake очень старая или потому, что что-то с кросс-компиляцией заставляет ее вести себя иначе, чем я привык (я не использовал autotools для cross компиляция еще). –

ответ

0

Если система сборки должна быть публичной, не жёстко путь в вашем Makefile.am.

Если вместо того, чтобы это внутреннее построить решение, которое вы хотите,

INCLUDES = -Ipath/to/headers 
+0

Полностью внутренняя. Стандартные места для нас, внутри страны. К сожалению, это не сработало, если поместить его в src/Makefile.am. Это место, которое вы намеревались? Я должен был упомянуть (вопрос редактирования), который я перекрестно компилирую на MacOS для ARM (не iOS). Я могу попробовать создать Linux в VirtualBox. – garyp

+0

Ах, что меняет вещи, «INCLUDES» предназначено для работы, но я не уверен, что будет делать компилятор. Вы видите, что '-I $ path' передается вообще компилятору? Если это не так, довольно странно. Можете ли вы предоставить образец «Makefile.am» (правильно названный цензурой)? –

+0

Входящий путь не появляется в вызове компилятору.Однако, если я устанавливаю переменную среды, она появляется * *. Я опубликую Makefile.am – garyp

0

Я не могу поставить цитату в комментарии ... так Лемм добавить это здесь. Ваш Makefile.am должен официально выглядеть следующим образом: ".

AM_CPPFLAGS = -I/path/to/headers 
bin_PROGRAMS = main 
main_SOURCES = first.h second.h main.cpp 
main_LDADD = -lone -ltwo 

где я переехал AM_CPPFLAGS к вершине и удалены SUBDIRS, потому что эти вещи повредить глаза.