簡體   English   中英

如何為freeglut編寫configure.ac和Makefile.am?

[英]How to write configure.ac and Makefile.am for freeglut?

我想在我的項目中使用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@

更正/添加到ptomato的答案:

簡短:實際上,freeglut是glut,所以:

AC_CHECK_LIB([glut], [glutInit])

說明:freeglut替代了OpenGL Utility Toolkit(GLUT)的較舊/不免費的實現。 在當今的發行版中,安裝了freeglut來替代這些較早/不免費的GLUT安裝。 這是通過設置freeglut的--enable-replace-glut配置選項來完成的。 結果,該庫稱為libglut而不是libfreeglut Ubuntu的freeglut軟件包為例。 它包含/usr/lib/libglut.so.3

為了支持較舊的發行版(將freeglut安裝為libfreeglut而不是libglut),您也需要進行檢查。

Pkg-config是一個程序,用於查找庫的必要編譯器標志和鏈接器標志。 PKG_CHECK_MODULES([NAME], [libraries])是一個autoconf宏,它查找libraries的標志並將其放入兩個變量NAME_CFLAGSNAME_LIBS 並非所有的庫都支持它。

為了支持pkg-config,庫必須安裝.pc文件。 查看freeglut的源代碼 ,似乎沒有,所以我得出結論,它不支持pkg-config。

當庫不支持pkg-config時,您應該做的是查看其文檔,以查看它是否提及您應使用的任何編譯器標志和鏈接器標志。 我在任何地方都找不到這件事。

既然失敗了,那么下一個最好的事情就是假設該庫不需要任何額外的編譯器標志,並且只需一個鏈接器標志: -l<name> ,在這種情況下為-lfreeglut 您還可以使用autoconf宏為您自動檢查。 您可以將其添加到您的configure.ac如下所示:

AC_CHECK_LIB([freeglut], [glutInit])

如果存在freeglut庫,它將自動將-lfreeglut添加到LIBS ,因此您不必在Makefile.am寫任何額外的東西。

    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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM