Tôi có một dự án sử dụng automake để tạo configure
và tất cả các tệp có liên quan (Tôi đang sử dụng lệnh autoreconf
để thực hiện tất cả nội dung này). Vì vậy, tôi đang cố gắng để thiết lập một số tập tin có điều kiện để biên dịch khi dự án được biên dịch cho macOS (OS X), Windows hoặc Linux. Nhưng nó không thành công như sau:Cách kiểm tra hệ điều hành với tự động
$ autoreconf -i ..
src/Makefile.am:30: error: LINUX does not appear in AM_CONDITIONAL
autoreconf: automake failed with exit status: 1
Và phần có chứa các lỗi trong Makefile.am
được như sau:
if OSX
butt_SOURCES += CurrentTrackOSX.h CurrentTrackOSX.m
endif
if LINUX
butt_SOURCES += currentTrack.h currentTrackLinux.cpp
endif
if WINDOWS
butt_SOURCES += currentTrack.h currentTrack.cpp
endif
Câu hỏi của tôi là, làm thế nào tôi có thể kiểm tra nếu hệ điều hành là Linux? Và nếu nó có thể, có cách nào tốt hơn để kiểm tra hệ điều hành trong automake?
Để trở thành pedantic (và pedantry là cần thiết khi giao dịch với autotools), 'automake' không tạo' configure' và không có gì để làm với nó cả. 'automake' tạo' Makefile.in' dựa trên mẫu 'Makefile.am'. –
Có nhiều cách để kiểm tra xem hệ điều hành có phải là Linux hay không, nhưng bạn không quan tâm và bạn không nên quan tâm. Bạn quan tâm đến các tính năng cụ thể của hệ thống, chứ không phải hệ thống là gì. Xác định các tính năng bạn cần, kiểm tra các tính năng cụ thể đó và đừng lo lắng về việc đó là Linux hay OS X hay Windows. Làm như vậy sẽ mạnh mẽ hơn, vì bạn không nên cho rằng tất cả Linux đều giống nhau. –
@William Pursell Cảm ơn bạn đã làm rõ về automake, tôi sử dụng 'autoreconf' để làm cho tất cả các công cụ, và tôi không biết tên chính xác cho nó. Và đối với các tệp này đặc biệt, tôi chỉ cần thư viện C chuẩn. Trên OS X cần AppleScript, chỉ có sẵn ở đó. Và trên Windows không được hỗ trợ trực tiếp (là một chức năng sơ khai). Vì vậy, tôi chỉ cần kiểm tra xem liệu Linux có phải là thư viện C phổ biến trên tất cả Linux hay không. – melchor629