2

プロジェクトに freeglut を使用したいと考えています。

私のconfigure.acでは、このように見えます.SDLではこのように機能したので、いくつかのポーションを置き換えて、freeglutでも機能することを望みましたが、そうではありません. それで、私は何を間違っていますか?

# Check for freeglut
PKG_CHECK_MODULES([FREEGLUT], [freeglut >= 3.0])
AC_SUBST(FREEGLUT_CFLAGS)
AC_SUBST(FREEGLUT_LIBS)

また、Makefile.am には何を書き込む必要がありますか? SDL の場合、次のようになります。

INCLUDES = @SDL_CFLAGS@
LDADD = @SDL_LIBS@
4

3 に答える 3

3

ptomatoの回答の修正/追加:

短い: 実際には freeglut は glut です。

AC_CHECK_LIB([glut], [glutInit])

説明: freeglut は、OpenGL ユーティリティ ツールキット (GLUT) の古い/不自由な実装の代替です。今日のディストリビューションでは、これらの古い/不自由な GLUT インストールの代わりとして、freeglut がインストールされています。これは--enable-replace-glut、freeglut の構成オプションを設定することによって行われます。その結果、 のlibglut代わりにライブラリが呼び出されlibfreeglutます。たとえば、Ubuntu の freeglut パッケージを見てください。が含まれています/usr/lib/libglut.so.3

また、freeglut を libglut ではなく libfreeglut としてインストールする古いディストリビューションをサポートするには、それも確認する必要があります。

于 2011-01-19T19:49:39.377 に答える
1

pkg-configは、ライブラリに必要なコンパイラ フラグとリンカー フラグを検索するプログラムです。PKG_CHECK_MODULES([NAME], [libraries])のフラグを検索し、それらを 2 つの変数に入れる autoconfマクロlibrariesです。すべてのライブラリがサポートしているわけではありません。NAME_CFLAGSNAME_LIBS

pkg-config をサポートするには、ライブラリで .pc ファイルをインストールする必要があります。freeglut のソース コードを見ると、そこにはないように見えるので、pkg-config をサポートしていないと判断します。

ライブラリが pkg-config をサポートしていない場合にすべきことは、そのドキュメントを見て、使用すべきコンパイラ フラグとリンカー フラグが記載されているかどうかを確認することです。これについての言及はどこにも見つかりません。

それが失敗するので、次善の策は、ライブラリが追加のコンパイラ フラグを必要とせず、リンカ フラグが 1 つだけ必要であると仮定することです:-l<name>この場合は-lfreeglut. autoconf マクロを使用して、これを自動的にチェックすることもできます。これを好きなように追加できますconfigure.ac

AC_CHECK_LIB([freeglut], [glutInit])

これは、freeglut ライブラリが存在する場合に自動的に追加-lfreeglutされるため、 .LIBSMakefile.am

于 2010-09-24T10:09:34.720 に答える
0
    dnl Check for GLUT
GLUT_CFLAGS=""
GLUT_LIBS=-lglut
glut_enabled=yes
AC_ARG_WITH([glut],
    [AS_HELP_STRING([--with-glut=DIR],
            [glut install directory])],
    [GLUT_CFLAGS="-I$withval/include"
     GLUT_LIBS="-L$withval/lib -lglut"])
AC_CHECK_HEADER([GL/glut.h],
        [],
        [glut_enabled=no])
AC_CHECK_LIB([glut],
        [glutInit],
        [],
        [glut_enabled=no])
于 2012-09-01T00:59:21.273 に答える