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
cửa sổ sẽ không bao giờ là mục tiêu cho tôi tôi hy vọng;) – claf