Autotools为ar添加了库标志
Autotools adds library flags to ar
我目前正在移植我的c++项目以使用GNU autotools工具链,并且我在设置我的库依赖项时遇到了麻烦。似乎发生的事情是,它给命令ar
标志意味着g++,如-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
添加参数,但如果我删除该变量,那么它不会给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,它应该为您工作。
你期望这一行做什么?:
libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS)
ar不做任何链接,它不关心其他库,所以没有必要在这里指定它们
相关文章:
- 在 CMake 中添加全局编译标志
- SSE 标志应该如何与现代 CMake 一起添加?
- 添加 swig pythoncode 以在 Python 对象上设置自己的标志
- 如何在 CMake 中添加"-l" (ell) 编译器标志
- 添加 g++ 的 -std= 标志时,C++打印到终端的速度要慢得多?
- 在其余标志后面添加-l标志
- 如何忽略随 buildrpm 自动添加的编译器标志
- QT 5.7将-STD = GNU 11添加到我的编译器标志,Clobbering -Std = C 14
- 为什么我需要将 -lstdc++ 添加到我的其他链接器标志中
- cmake从子目录中添加了破坏链接/库链接优先级的标志和库
- 在这种情况下,为什么QMAKE添加-O1和-O2优化标志
- 将汇编标志添加到QT中以使用mySQL
- 如何将编译标志 -g 添加到 make 文件
- xcode:添加链接器标志和"link binary with libraries"的区别
- c++将标志添加到const方法中
- 如何在 CMake 文件中添加链接器或编译标志
- 将默认标志添加到 CLang++ 或 G++
- GCOV 在添加 -rdynamic 标志(通过 gdb 调用__gcov_flush())后停止生成 GCDA 文件
- 添加 -fPIC 编译标志后"Recompile with -fPIC"错误仍然存在
- g++-D标志将定义添加到对象文件中