2010-11-09 37 views
71

Mới thành C++; Hiểu cơ bản về bao gồm, thư viện và quá trình biên dịch. Đã làm một vài makefiles đơn giản chưa.Cách xác định một số đường dẫn bao gồm trong Makefile

Dự án hiện tại của tôi liên quan đến việc sử dụng api DB thông tin và tôi cần bao gồm các tệp tiêu đề trong nhiều thư mục không chuẩn. Làm thế nào để viết điều đó? Havent tìm thấy bất cứ thứ gì trên mạng, có lẽ vì tôi không sử dụng cụm từ tìm kiếm tốt

Đây là một cách mà tôi đã cố gắng (không hoạt động). Chỉ cần để hiển thị các makefile

LIB=-L/usr/informix/lib/c++ 
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public 

default: main 

main: test.cpp 
     gcc -Wall $(LIB) $(INC) -c test.cpp 
     #gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp 

clean: 
     rm -r test.o make.out 

Trả lời

80

Bạn cần phải thêm vào trước mỗi thư mục với -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 
+0

Nó vẫn không làm việc cho tôi, mặc dù chạy gcc bằng tay hiện nó. – NoBugs

2
INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 

cảm ơn cho nghe ... ngay sau khi đăng tôi tìm thấy possiblity thiếu tôi đã không cố gắng chưa

63

Bạn cần sử dụng -I với mỗi thư mục. Nhưng bạn vẫn có thể phân định các thư mục với khoảng trắng nếu bạn sử dụng (GNU) làm của foreach:

INC=$(DIR1) $(DIR2) ... 
INC_PARAMS=$(foreach d, $(INC), -I$d) 
+6

+ Đây là những gì tôi đến đây để tìm kiếm. '$ (foreach ,,)' –

+11

Hoặc ngắn hơn: 'INC_PARAMS = $ (INC:% = - I%)' với [thay thế] (https://www.gnu.org/software/make/manual/html_node/Substitution -Refs.html). '$ (foreach ,,)' có thể đọc được nhiều hơn, nhưng các thay thế thường được sử dụng để làm quen với cách chúng hoạt động tốt. – skalee

Các vấn đề liên quan