2009-03-15 25 views
12

Tôi hiện đang chuyển đổi dự án C nhỏ từ autotools thành CMake.Làm cách nào để kiểm tra các tệp tiêu đề và chức năng thư viện trong CMake giống như được thực hiện trong Autotools?

Trong cũ configure.in Tôi đã kiểm tra tất cả các tiêu đề và thư viện chức năng cho sự tồn tại bằng cách sử dụng dòng lệnh sau:

# Checks for header files 
AC_HEADER_STDC 
AC_CHECK_HEADERS([stdlib.h time.h math.h sys/stat.h errno.h unistd.h fcntl.h signal.h]) 

# Checks for library functions 
AC_FUNC_FORK 
AC_CHECK_FUNCS([time localtime mktime gmtime exit fork chdir atol signal]) 
AC_FUNC_STRFTIME 

Đó là những gì nhiều autotools dự án làm AFAIK.

Mặc dù thực tế là trình biên dịch đã kiểm tra các tệp tiêu đề cần thiết và trình kiểm tra liên kết kiểm tra các chức năng thư viện, mã của tôi vẫn cần các kiểm tra này ở giai đoạn cấu hình để thiết lập đúng cờ biên dịch cho #ifdef HAVE_FOOBAR và giống nhau.

Trong trường hợp này, cách tốt nhất để kiểm tra tiêu đề/chức năng với CMake là gì?

Trả lời

10

Bạn có thể dễ dàng chuyển trực tiếp trực tiếp với CHECK_FUNCTION_EXISTS, CHECK_INCLUDE_FILE, CHECK_TYPE_SIZE, v.v. Ngoài ra, xem CMake_HowToDoPlatformChecks để được tư vấn.


Cấu hình trong phong cách này cho biết thêm tính di động (ví dụ: bạn có thể kiểm tra ucontext.hsetjmp.h và sử dụng chữ cái hiện hữu, thay đổi mã của bạn với #ifdef HAVE_UCONTEXT hoặc #ifdef HAVE_SETJMP). Hơn nữa, khi bạn phân phối ứng dụng của mình, bạn muốn tránh có lỗi biên dịch (đối với người dùng) và do đó với hệ thống xây dựng tốt, bạn có thể xử lý hầu hết các khác biệt về kiến ​​trúc trước khi phân phối ứng dụng của mình. Nó dễ dàng hơn cho người không lập trình để hiểu rằng nếu "kiểm tra tiêu đề gtk + - không thành công", họ phải cài đặt gtk, thay vì có một buch biên dịch các dòng lỗi nói cùng một điều, nhưng không thể đọc được nhiều nhất của họ :)

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