2010-04-24 55 views

Trả lời

13

Đối với Eclipse Indigo: Không có khả năng xác định toàn cầu bao gồm đường dẫn và thư viện. Nhưng bạn có thể xuất và nhập chúng từ dự án này sang dự án khác.

Đến Project> Properties> C/C++ chung> Đường dẫn và biểu tượng Sau đó bấm Export Settings ... để lưu bao gồm đường dẫn và/hoặc định nghĩa biểu tượng vào một tập tin. Trong dự án khác của bạn, bạn có thể sử dụng Cài đặt nhập ...

+6

Không làm việc :(Tính năng nhập dường như bị hỏng –

+0

Hoạt động hoàn hảo (Eclipse Juno): bạn chỉ cần xuất cài đặt từ dự án, chứa tập hợp bao gồm có liên quan nhất, vào tệp xml (hãy gọi nó là default_includes.xml) và lưu trữ nó ở nơi nào đó ổ đĩa để cho phép các dự án khác của bạn nhập khẩu, đó là nó –

+4

những gì về thư viện? –

7

Tôi thường sử dụng biến môi trường CPATH để bao gồm các thư mục khác nhau trên tất cả các dự án của tôi. Nó được tìm thấy dưới: c/C++ -> build-> environment. Hãy chắc chắn tách từng đường dẫn bằng ký tự ':' (không phải dấu chấm phẩy ';').

Bạn cũng có thể sử dụng PATH để bao gồm lib tĩnh. Tuy nhiên, đối với tôi nó chỉ hoạt động đáng tin cậy trong linux. Trong OSX nó làm hỏng.

Cách khác là thêm các thư viện và tiêu đề này vào các đường dẫn tìm kiếm mặc định của môi trường của bạn; địa điểm thích/usr/local/lib. Tìm hiểu về nơi liên kết của bạn tìm kiếm theo mặc định.

+0

Thiết lập CPATH trong nhật thực là gọn gàng để sửa chữa mọi thứ cho tất cả các dự án (nếu nó là cài đặt lặp lại). nhật thực. – fchen

9

Có, bạn có thể, trong 2 bước, thân thiện với người dùng hơn như được đề cập bởi parvus. Cả hai đều được thực hiện trong "Thuộc tính dự án" -> "Đường dẫn C/C++" -> "Đường dẫn và ký hiệu":

  1. Trong dự án hiện tại nơi bạn đã định cấu hình đường dẫn bao gồm: Đánh dấu đường dẫn bao gồm (trong tab "Bao gồm") mà bạn muốn sao chép vào dự án mới và chọn "Xuất". Lưu ý rằng điều này thêm một thẻ [Exp] vào mỗi dòng.
  2. Trong dự án mới tạo: Trong tab "Tham khảo", đánh dấu vào hộp kiểm của dự án vừa được đề cập và khi bạn chuyển về tab "Bao gồm", bạn sẽ thấy tất cả đường dẫn bạn vừa xuất hiện ở đó.

Tham khảo thư viện hoạt động theo cùng một cách.

Cũng có một cái nhìn tại địa chỉ:

+0

Tôi không thể đưa thư viện vào hoạt động giống như những gì bạn đã mô tả, khi làm việc trong IDE Eclipse cho các nhà phát triển C/C++. Phiên bản: Mars Release (4.5.0). Id xây dựng: 20150621-1200. – Eduardo

1

Tôi nhìn vào nó từ lâu rồi. Một vài bài đăng đề cập đến một phương pháp: Project> Properties> C/C++ General> Đường dẫn và Ký hiệu Sau đó nhấp vào Export Settings .. Nhưng nó chỉ hoạt động để bao gồm các tệp tiêu đề.

Để chỉ định thư viện và đường dẫn thư viện, theo như tôi biết, tôi không tìm thấy giải pháp dễ dàng. Ví dụ, tôi hiện đang sử dụng thư viện ffmpeg. Nếu bạn sử dụng "Makefile", bao gồm cả và các tập tin thư viện có thể được thể hiện dưới đây:

FFMPEG_LIBS = libavdevice
libavformat
libavfilter
libavcodec
libswresample
libswscale
libavutil
CFLAGS: = $ (shell pkg-config --cflags $ (FFMPEG_LIBS)) $ (CFLAGS) LDLIBS : = $ (shell pkg-config --libs $ (FFMPEG_LIBS)) $ (LDLIBS)

Có nhiều tệp ở đây. Nếu tôi bao gồm chúng từng cái một trong một dự án Eclipse C++, nó là khó khăn. Tôi không biết tại sao không có tùy chọn trong Eclipse mà chúng tôi có thể bao gồm các tệp thư viện bằng cách sử dụng một dòng dài bằng cách sử dụng; như thiết bị tách, chẳng hạn như:

-lavdevice -lavfilter -lswresample -lswscale -lavformat -lavcodec -ldl -lasound -lSDL -lz -lrt -lavutil -lm

Có cách nào như vậy , hoặc tôi phải gõ từng tập tin thư viện, hoặc phải sử dụng Makefile?

+0

BTW, tôi đã từng thử trình cắm thêm pkg-config cho Eclipse, nó không hoạt động đối với một thư viện mà tôi đã thử. Hãy để tôi thử lại lần nữa, vì tôi đoán lỗi trước đó có thể là do lỗi. Nhưng dù sao, tôi nghĩ rằng nó sẽ là đẹp hơn để có một tùy chọn để sử dụng một dòng để xác định các tập tin thư viện. – user1914692

+0

Tôi nghĩ tôi tìm cách. Đi đến Properties -> C/C++ Build -> Settings -> GCC C++ Linker -> Miscellaneous -> Linker flags, bạn có thể gõ "-lavdevice" vv để chỉ định các thư viện. – user1914692

3

Tôi chỉ sao chép một dự án bằng cách sử dụng nhật thực được xây dựng trong Trình khám phá dự án. Sau đó, chỉ cần đổi tên các tệp nguồn.

5

Đối với thư viện tôi làm như sau trong dự án mã nguồn:

Project -> properties -> c/C++ Build -> C++ linker -> thư viện

Sau này tôi chọn thư viện (shift + chuột) & copy (ctrl + c)

Trong dự án trống:

Project -> properties -> c/C++ Build -> C++ linker -> thư viện

ctrl + v (paste)

Làm việc tốt với nhật thực juno

+0

Còn về IDE Eclipse cho các nhà phát triển C/C++. Phiên bản: Mars Release (4.5.0). Id xây dựng: 20150621-1200? – Eduardo

0

tôi phải đối mặt với cùng một vấn đề và giải quyết nó như thế này: tôi thấy rằng trong tự động tạo makefile có dòng:

-include ../makefile.init 
... 
-include ../makefile.defs 
... 
-include ../makefile.targets 

sau khi đọc How can I parameterize an Eclipse generated make file Tôi nhận ra rằng bạn có thể xác định các biến ngoài dự án của bạn. Điều đó có nghĩa là nó có thể được chia sẻ biến cho một số dự án. Vì vậy, tôi thêm vào tập tin makefile.defs bên ngoài của dự án và tuyên bố trong đó một số biến:

MY_INCLUDE = <path to include>... 
MY_LIBS_PATH = <path to libs>... 
MY_LIBS = -lmylib ... (the libs) 

hơn trong tất cả các dự án của tôi "Properties-> c/C++ dựng-> xây dựng biến" Tôi định nghĩa biến mới:

my_include = $(MY_INCLUDE) 
my_libs_path = $(MYLIBS_PATH) 
my_libs = $(MY_LIBS) 

Và hơn bạn có thể cho bạn những biến đó trong dự án. Đi đến properties-> c/C++ build-> Settings và chọn trình biên dịch bao gồm và thêm $ (my_include). Vào linker và chọn Libraries và thêm vào đường dẫn tìm kiếm $ (my_libs_path).Đối với một số lý do các thư viện (-l) không thể có biến env được xác định của tôi vì vậy tôi bỏ qua nó bằng cách chọn linker và hơn đi đến Miscellaneous và thêm vào linker flags $ (my_libs). Cuối cùng, bạn phải thay đổi thứ tự trong dòng lệnh (khi trình liên kết thực thi) khiến danh sách libs cần phải đến sau tệp .o. Vì vậy, để làm điều đó bạn đi đến linker và tab và ở đó bạn có thể thấy dòng lệnh cuối cùng sẽ được thực thi. Trong "mô hình dòng lệnh thiết lập chuyên gia", bạn di chuyển $ {FLAGS} về phía sau của dòng lệnh (di chuyển chuỗi $ (my_libs) ở phía sau dòng lệnh). R ALLNG TẤT CẢ. rất nhiều của nó nhưng bạn cần phải làm điều đó một lần duy nhất ... hy vọng rằng nó sẽ giúp người ...

0

Semi-automagically, nó có thể được thực hiện bằng script perl này:

#!/usr/bin/perl 

# pipe the (gcc) compile command into this script 
# It emits listOptionValue lines to paste into .cproject 
# 
# To easily find the paste location, set the include path as usual to a string 
# that is easily recognizable in the .cproject, e.g. to "MARKER_INCLUDE_PATH". 
# 
# Make sure eclipse is not running while you do these sorts of hacks and backup 
# your .cproject before. 
# ----------------------------------------------------------------------------------------- 
# sample line: <listOptionValue builtIn="false" value="/usr/include/gdk-pixbuf-2.0"/> 

while (<>) { 
    @include_options = m#-I *(.*?) #g; 
    print join ("\n", @include_options) . "\n"; 
    print join ('"/>' ."\n" . '         <listOptionValue builtIn="false" value="', @include_options); 
    print '"/>' . "\n"; 
} 
Các vấn đề liên quan