문제

휴대용 빌드 시스템 (단계별)을 어떻게 만들 수 있는지 궁금합니다. 현재 CMAKE를 사용하고 있습니다. 아치 대상이 하나만있어서 처음에는 설정하기 쉽지만 이제는 패키지를 포장해야합니다. 도서관 개발중인 아치를위한 가장 좋은 방법이 어떻게 테스트하고 있는지 궁금합니다.

나는 아치에 따라 물건을 정의하기 위해 config.h가 필요하다는 것을 알고 있지만 이것이 얼마나 자동이 될 수 있는지 모르겠습니다.

빌드 시스템을 갖는 다른 방법은 따뜻하게 환영합니다!

도움이 되었습니까?

해결책

Cmake 만 사용할 수 있습니다. 매우 간단합니다.

이런 것들이 필요합니다.

첫째, 구성 세부 사항을 찾는 것을 의미합니다. 예를 들어, 일부 기능이 일부 플랫폼에서 다르게 이름이 있다는 것을 알고 있으면 사용할 수 있습니다. TRY_COMPILE 그것을 발견하려면 :

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

어디 alternative_function_test.cpp 대체 정의로만 컴파일하는 소스 디렉토리의 파일입니다.

이것은 변수를 정의합니다 HAVE_ALTERNATIVE_FUNC 컴파일이 성공한 경우.

둘째,이 정의가 소스에 영향을 미치도록해야합니다. 컴파일 플래그에 추가 할 수 있습니다

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

또는 당신은 만들 수 있습니다 config.h 파일. 만들다 config.h.in 다음 줄로

#cmakedefine HAVE_ALTERNATIVE_FUNCS

그리고 a config.h 이 라인에 의해 파일 CMakeLists.txt (보다 CONFIGURE_FILE)

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

그만큼 #cmakedefine 번역됩니다 #define 또는 #undef CMAKE 변수에 따라

BTW, Edianness를 테스트하려면 참조하십시오 이 메일

다른 팁

나는 지금까지 나를 위해 잘 작동 한 GNU Autoconf/Automake 도구 체인을 사용하고 있습니다. 나는 실제로 Linux/x86 (및 64 비트)과 Mac에만 초점을 맞추고 있습니다. Endian 문제로 인해 PowerPC를 구축하는 경우 중요합니다.

AutoConf를 사용하면 매크로로 호스트 플랫폼을 확인할 수 있습니다.

AC_CANONICAL_HOST

그리고 다음을 사용하여 엔디 니스를 점검하십시오.

AC_C_BIGENDIAN

AutoConf는 CONFIG.H에 정의를 추가합니다.

GNU Autotools가 Windows에서 얼마나 잘 작동하는지 확신하지 못하므로 Windows가 대상 중 하나 인 경우 기존 CMAKE 빌드 시스템과 유사한 기능을 찾는 것이 좋습니다.

Autotools의 좋은 프라이머는 여기를 살펴보십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top