2009-02-12 37 views
6

Tôi tự hỏi làm thế nào tôi có thể tạo một hệ thống xây dựng di động (từng bước), tôi hiện đang sử dụng cmake vì nó dễ cài đặt ngay từ đầu, chỉ với một mục tiêu, nhưng Bây giờ tôi phải đóng gói thư viện Tôi đang phát triển Tôi tự hỏi làm thế nào là cách tốt nhất để làm cho nó di động cho arch tôi đang thử nghiệm.Xây dựng hệ thống và tính di động

Tôi biết tôi cần một config.h để xác định mọi thứ tùy thuộc vào vòm nhưng tôi không biết tự động điều này có thể như thế nào.

Bất kỳ cách nào khác để có hệ thống xây dựng đều được chào đón nồng nhiệt!

Trả lời

10

Bạn chỉ có thể sử dụng CMake, nó khá đơn giản.

Bạn cần những điều sau:

Đầu tiên, có nghĩa là tìm hiểu các chi tiết cấu hình. Ví dụ, nếu bạn biết rằng một số chức năng được đặt tên khác nhau trên một số nền tảng, bạn có thể sử dụng TRY_COMPILE để khám phá ra rằng:

TRY_COMPILE(HAVE_ALTERNATIVE_FUNC 
    ${CMAKE_BINARY_DIR} 
    ${CMAKE_SOURCE_DIR}/alternative_function_test.cpp 
    CMAKE_FLAGS -DINCLUDE_DIRECTORIES=xxx 
) 

nơi alternative_function_test.cpp là một tập tin trong thư mục nguồn của bạn để biên dịch chỉ với định nghĩa thay thế.

Điều này sẽ xác định biến HAVE_ALTERNATIVE_FUNC nếu biên dịch thành công.

Thứ hai, bạn cần làm cho định nghĩa này ảnh hưởng đến nguồn của bạn. Hoặc bạn có thể thêm nó để biên soạn cờ

IF(HAVE_TR1_RANDOM) 
    ADD_DEFINITIONS(-DHAVE_TR1_RANDOM) 
ENDIF(HAVE_TR1_RANDOM) 

hoặc bạn có thể tạo tệp config.h. Tạo config.h.in với dòng sau

#cmakedefine HAVE_ALTERNATIVE_FUNCS 

và tạo ra một tập tin config.h bởi dòng này trong CMakeLists.txt (xem CONFIGURE_FILE)

CONFIGURE_FILE(config.h.in config.h @ONLY) 

các #cmakedefine sẽ được dịch sang #define hoặc #undef tùy thuộc vào biến CMake.

BTW, để thử nghiệm độ nghiêng, hãy xem this mail

2

Tôi đã sử dụng chuỗi công cụ tự động hóa/tự động hóa GNU đã hoạt động tốt cho tôi cho đến nay. Tôi chỉ thực sự tập trung vào Linux/x86 (và 64bit) và máy Mac, điều quan trọng nếu bạn đang xây dựng trên một PowerPC, do các vấn đề cuối cùng.

Với autoconf bạn có thể kiểm tra nền tảng máy chủ với macro:

AC_CANONICAL_HOST 

Và kiểm tra endianness sử dụng:

AC_C_BIGENDIAN 

Autoconf sau đó sẽ bổ sung thêm định nghĩa để config.h mà bạn có thể sử dụng trong ma cua ban.

Tôi không chắc chắn (chưa bao giờ thử) GNU tự động hoạt động trên Windows như thế nào, vì vậy nếu Windows là một trong các mục tiêu của bạn thì bạn có thể tìm ra chức năng tương tự với hệ thống xây dựng cmake hiện có của mình.

Đối với một mồi tốt trên autotools, có một cái nhìn ở đây:

http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool

+0

cửa sổ sẽ không bao giờ là mục tiêu cho tôi tôi hy vọng;) – claf

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