gpt4 book ai didi

c++ - Autotools 将库标志添加到 ar

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:26 25 4
gpt4 key购买 nike

我目前正在移植我的 C++ 项目以使用 GNU autotools 工具链,但我在设置我的库依赖项时遇到了问题。似乎正在发生的事情是它为命令提供了用于 g++ 的 ar 标志,例如 -lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2

这是 src/Makefile.am 的代码:

noinst_LIBRARIES = libccade.a
libccade_a_SOURCES = CCade.h CCade_graphics.h CCade_graphics.cpp CCade_util.h CCade_util.cpp
libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS)
libccade_a_CFLAGS = $(libsdl2_CFLAGS) $(libsdl2_image_CFLAGS)

这是 make 输出的内容:

ar cru libccade.a CCade_graphics.o CCade_util.o -lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2
ar: invalid option -- 'L'
Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
...(more documentation on ar)...

它似乎是从 libccade_a_LIBADD 添加 args,但如果我删除该变量,则它不会将标志提供给 g++。我该怎么办?

最佳答案

看起来您没有使用 libtool。我通常做的是将它放在我的 configure.ac 中:

AM_PROG_LIBTOOL

然后我的 Makefile.am 会是这样的:

noinst_HEADERS = CCade.h CCade_graphics.h CCade_util.h

noinst_LTLIBRARIES = libccade.la

libccade_la_SOURCES = CCade_graphics.cpp CCade_util.cpp
libccade_la_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS)
libccade_la_CPPFLAGS = $(libsdl2_CFLAGS) $(libsdl2_image_CFLAGS)

确保第二个变量是 noinst_LTLIBRARIES,它应该适合您。

关于c++ - Autotools 将库标志添加到 ar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com