2016-04-27 17 views
8

Tôi có một số tệp tiêu đề trong thư mục con, phải được sao chép vào thư mục con cùng tên trong thư mục bao gồm của tôi. Tôi có thể sử dụng tiền tố nobase để làm cho điều đó xảy ra (Tôi đang làm việc với mã heimdal, FYI):Cách sử dụng các tiền tố nobase và nodist tự động cùng nhau trên include_HEADERS

nobase_include_HEADERS = hcrypto/aes.h \ 
     hcrypto/bn.h  \ 
     hcrypto/cmac.h \ 
     hcrypto/des.h  \ 
     hcrypto/dh.h  \ 
     hcrypto/dsa.h  \ 
etc... 

Nhưng một số các tập tin tiêu đề được tạo ra trong quá trình xây dựng (kể từ heimdal phải được xây dựng trước những tiêu đề các tệp tồn tại), vì vậy tôi cần phải sử dụng tiền tố nodist để không phân phối.

I found an article mà nói tôi có thể sử dụng chúng cả hai cùng nhau, và thậm chí cung cấp một ví dụ tương tự, vì vậy tôi đã làm điều này:

nobase_nodist_include_HEADERS = hcrypto/aes.h \ 
     hcrypto/bn.h  \ 
     hcrypto/cmac.h \ 
     hcrypto/des.h  \ 
     hcrypto/dh.h  \ 
     hcrypto/dsa.h  \ 
etc... 

Tôi không nhận thấy bất kỳ cảnh báo hay lỗi, nhưng các tập tin tiêu đề KHÔNG được được sao chép vào thư mục bao gồm của tôi. Tôi đang làm điều gì đó sai, hoặc có một lỗi trong autotools?

Thú vị, nếu tôi đảo ngược các tiền tố, tôi nhận được lỗi này:

Makefile.am:93: error: 'nodist_nobase_include_HEADERS' is used but 'nobase_includedir' is undefined 

Lý do cho lỗi đó được giải thích ở đây automake documentation:

‘nobase_’ should be specified first when used in conjunction with either ‘dist_’ or ‘nodist_’

Tôi cũng đã xác định nodist_include_HEADERS (đang hoạt động). Có lẽ hai định nghĩa đang gây ra một số loại xung đột?

Tôi vừa thử xóa nodist_include_HEADERS và đặt tất cả các tiêu đề của tôi dưới dòng nobase_nodist_include_HEADERS, nhưng bây giờ KHÔNG có tiêu đề của tôi được cài đặt.

Automake và thông tin hệ thống: automake (GNU automake) 1.13.4 openSUSE 13.2 (x86_64)

+0

vui lòng thêm bất kỳ thông tin bổ sung nào vào câu hỏi, thay vì lạm dụng một số nhận xét. –

+0

Vui lòng tạo một ví dụ làm việc hoàn chỉnh bắt chước http://stackoverflow.com/help/mcve (Một bộ sưu tập nhỏ của Makefile.am trong trường hợp của bạn) –

Trả lời

3

Nếu các tiêu đề được tạo ra bởi một chương trình, bạn nên đánh dấu chúng với BUILT_SOURCES, cách này automake sẽ không bị nhầm lẫn để cố gắng cài đặt chúng dưới dạng dist.

Thứ hai, đối với các tệp tiêu đề không được cài đặt, tốt hơn nên sử dụng chỉ thị SOURCES, thay vì HEADERS. Hãy thử điều này:

nobase_include_SOURCES += hcrypto/aes.h \ 
    hcrypto/bn.h  \ 
    hcrypto/cmac.h \ 
    hcrypto/des.h  \ 
    hcrypto/dh.h  \ 
    hcrypto/dsa.h 
BUILT_SOURCES = hcrypto/aes.h \ 
    hcrypto/bn.h  \ 
    hcrypto/cmac.h \ 
    hcrypto/des.h  \ 
    hcrypto/dh.h  \ 
    hcrypto/dsa.h 
Các vấn đề liên quan