[英]Eclipse CDT clang toolchain - cannot remove stdlibc++ from linker options, but can add libc++, which one does Eclipse use?
[英]Add linker options to Eclipse CDT Autotools project
我不確定是否完全遺漏了這里的要點,但是我找不到在Autotools項目的Eclipse CDT插件中添加鏈接器選項的地方。 我想用-l選項鏈接靜態庫,我希望在標簽中找到類似“鏈接器”之類的標簽
Project -> Properties -> C/C++ Build -> Settings
在哪里可以找到鏈接器選項?
如果我不能這樣做,那么我可以手動編輯哪個配置文件或make文件以達到相同的結果(鏈接靜態庫)
- 編輯 -
我遇到了一個建議,我應該將此添加到我的configure.ac
PKG_CHECK_MODULES([DEPS], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])
我試過了,但這不能說服自動工具告訴鏈接器鏈接適當的庫。 我錯過了什么嗎?
-編輯2--
My Makefile.am是CDT新項目向導為autotools項目生成的默認文件。
SUBDIRS=src
Config.ac文件也是默認設置...
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(HelloWorld, 1.0)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE()
AC_PROG_CXX
AC_CONFIG_FILES(Makefile src/Makefile)
AC_OUTPUT
我嘗試在Config.ac中添加如下所示的行:
PKG_CHECK_MODULES([libav], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])
我在“ AC_PROG_CXX”行之后
然后,將以下內容添加到我的Makefile.am中。
HelloWorld_CPPFLAGS = $(libav_CFLAGS)
HelloWorld_LDFLAGS= $(libav_LIBS)
文件HelloWorld.cpp只是一個快速測試,應該報告libavformat版本
#include <stdio.h>
extern "C" {
#include <libavformat/avformat.h>
}
int main(void) {
int avVer = avformat_version();
printf("libavformat version number: %d", avVer);
return 0;
}
所有這些都由Eclipse CDT管理。
您需要在Makefile.am
中將相關的-l
標志添加到AM_LDFLAGS
; 例如:
AM_LDFLAGS = -l<library name>
最好在configure.ac
添加相應的代碼,以確保可移植到其他系統。
本文有助於澄清問題: http : //aquamentus.com/autoconf_tutorial.html
我把一些東西放在錯誤的地方。 該程序使用單獨的Makefile.am,因為它位於src子目錄中。 這需要像以前一樣放入Configure.ac
PKG_CHECK_MODULES([libav], [libavutil >= 6:0.8.10-1 libavformat >= 6:0.8.10-1 libavcodec >= 6:0.8.10-1])
這會生成兩個要在Makefile.am中使用的變量,它們是...
$(libav_CFLAGS)
$(libav_LIBS)
頂級Makefile.am只需像以前一樣指向該目錄...
SUBDIRS=src
程序的鏈接器標志在src / Makefile.am文件中通過以下類似方式處理...
bin_PROGRAMS=HelloWorld
HelloWorld_SOURCES=HelloWorld.cpp
HelloWorld_CPPFLAGS = $(libav_CFLAGS)
HelloWorld_LDFLAGS= $(libav_LIBS)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.