2 Stimmen

Portierung von ELF-Projekten mit gemeinsam genutzten Bibliotheken in autoconf auf OS X

Wie verwende ich Autoconf-Makros, um Werte in einem configure-Skript oder Makefile, das durch AC_OUTPUT ausgegeben wird, bedingt zu ändern.

Das Ziel ist es, AC_CANONICAL_TARGET oder einen anderen Weg zu verwenden, um zu erkennen, dass ich auf OS X bin und dann meinen Makefiles zu erlauben, die LDFLAGS durch Entfernen von -shared und Ersetzen von -soname mit -dylib_install_name anzupassen.

Ich muss also lernen, wie ich die AC_SUBST-Werte oder die lokalen Variablen in der Datei configure.ac mit einer bedingten Anweisung, die den Zielhost überprüft, ändern kann.

Ich muss hinzufügen, dass ich versucht habe, AC_COMPILE_IFELSE mit AC_LANG_PROGRAM zu verwenden, um diesen Code zu kompilieren.

#include <unistd.h>
#ifndef __APPLE__
error: This is not apple Darwin
#endif

Ich erhalte zwar keine Fehlermeldungen, kann aber nicht wirklich bestätigen, dass es funktioniert. Wenn ich das neue Skript unter FreeBSD oder Darwin ausführe, gibt es keine entsprechende Ausgabe. Außerdem verwende ich immer autoconf -Wall.

Das zweite und dritte Argument für AC_COMPILE_IFELSE ist [is_darwin=yes], [is_darwin=no], aber wie kann ich auf diese Werte zugreifen?

Vielen Dank im Voraus für jede Hilfe.

0voto

Stefan M Punkte 45

Nun, um die Frage vom Stapel zu lassen, beantworte ich sie, indem ich sage, dass diese Variablen im zweiten und dritten Argument von AC_COMPILE_IFELSE als SHELL-Variablen im gesamten configure.ac-Skript verfügbar sind. Tatsächlich habe ich das Problem gelöst, indem ich mehrere Variablendefinitionen in diesen beiden Argumenten platziert habe, da sie mehrere Zeilen Shell-Code akzeptieren und nicht nur eine Variablendefinition.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X