Anzeige:
Ergebnis 1 bis 6 von 6

Thema: [autotools] CFLAGS statt LIBS am Schluss????

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377

    Question [autotools] CFLAGS statt LIBS am Schluss????

    Was koennte ich denn falsch gemacht haben? Ich hab ein kleineres Projekt, bis noch nur ca. 10 Dateien und moechte die gerne ueber make & co. verwalten.

    Dazu hab ich eine configure.in Datei angelegt:
    Code:
      1 #                                               -*- Autoconf -*-
      2 # Process this file with autoconf to produce a configure script.
      3
      4 FULL-PACKAGE-NAME="test";
      5 VERSION="0.1.0";
      6 BUG-REPORT-ADDRESS="no-replay@mai.com";
      7
      8 AC_PREREQ(2.60a)
      9 AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
     10 AM_INIT_AUTOMAKE
     11 AC_CONFIG_SRCDIR([src/main.cc])
     12 AC_CONFIG_HEADER([config.h])
     13
     14 # Checks for programs.
     15 AC_PROG_CXX
     16 AC_PROG_INSTALL
     17 AC_PROG_MAKE_SET
     18 PKG_PROG_PKG_CONFIG([0.14.0])
     19
     20 # Checks for libraries.
     21 PKG_CHECK_MODULES(GTKMM,
     22         [gtkmm-2.4 >= 2.4.0],
     23         [AC_DEFINE([HAVE_GTKMM],,[GTKmm is supported])],
     24         [AC_MSG_RESULT(gtkmm-2.4 not found!!)])
     25 PKG_CHECK_MODULES(GLIBMM,
     26         [glibmm-2.4 >= 2.4.0],
     27         [AC_DEFINE([HAVE_GLIBMM],,[Glibmm is supported])],
     28         [AC_MSG_RESULT(glibmm-2.4 not found!!)])
     29 CXXFLAGS="$CXXFLAGS $GTKMM_CFLAGS"
     30 LDXXFLAGS="$LDXXFLAGS $GTKMM_LIBS"
     31
     32 # Checks for header files.
     33
     34 # Checks for typedefs, structures, and compiler characteristics.
     35 AC_HEADER_STDBOOL
     36
     37 # Checks for library functions.
     38
     39 AC_CONFIG_FILES([Makefile
     40                  src/Makefile])
     41 AC_OUTPUT
    eine Makefile.in (enthaelt die Kompilierregeln), Makefile.am die auf das Verzeichnis src verweist und dort noch ne Makefile.am die alle zu kompilierenden Dateien enthaelt.
    An sich nicht so kompliziert und es funktioniert fuers Kompilieren an sich ganz gut, keine Probleme.
    Kommt er allerdings zum Linken dann krieg ich 100e von Fehlern. Das liegt daran dass er nicht die LDXXFLAGS verwendet sondern die CXXFLAGS als zusaetzliche Flags.
    Jemand ne Idee warum das passiert ?

    Wenn ich im orginalen Makefile.in die Ersetzungen durch gueltige Befehle austausche kompiliert das Projekt naehmlich ohne Probleme durch ....

    Bin ratlos ...

    Hilfe ....

    mfg nul
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    Die configure.in postest du, aber die Makefile.am nicht? Ebenso interessant sind die betroffenen Stellen in Makefile.in

    Gruss, Andy

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    66
    So etwas wie LDXXFLAGS gibt es nicht, das muss LDFLAGS heißen. Die CXXFLAGS (und auhc die C(PP)FLAGS) werden beim linken immer angegeben.

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    @RapidMax: Sorry, die hab ich vergessen. Aber ich war mir zu 99% sicher dass ich den Fehler in der configure.in mache. Und wie sich herausgestellt hat war das dann auch so! - Soll ich sie evtl. noch nachliefern?

    @Yonibear: LDFLAGS, das werd ich mir fuer die Zukunft merken, das hat gefehlt!

    Noch ne Frage, was sind die Unterschiede zwischen CXXFLAGS und CPPFLAGS?

    Danke euch zwei!

    mfg
    nul
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    66
    Nagel mich nicht darauf fest, aber meines Wissens steht CPPFLAGS für C und C++-Code. CFLAGS und CXXFLAGS sind AFAIK jeweils nur für eine Sprache.

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Aus ./configure --help hab ich folgendes darueber erfahren:
    Code:
      CXX         C++ compiler command
      CXXFLAGS    C++ compiler flags
      LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
                  nonstandard directory <lib dir>
      CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
                  you have headers in a nonstandard directory <include dir>
      CC          C compiler command
      CFLAGS      C compiler flags
      PKG_CONFIG  path to pkg-config utility
      GTKMM_CFLAGS
                  C compiler flags for GTKMM, overriding pkg-config
      GTKMM_LIBS  linker flags for GTKMM, overriding pkg-config
      CPP         C preprocessor
    Wobei GTKMM_CFLAGS und GTKMM_LIBS eigene Frags sind, die durch mein configure.in-File erzeugt wurden!
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •