2011-10-14 61 views
3

我需要根據操作系統更改以下代碼中的cmake PREFIX。cmake:根據操作系統更改EXTERNALPROJECT_ADD中的PREFIX

它試着這樣說:

INCLUDE(ExternalProject) 

EXTERNALPROJECT_ADD(
    libconfig 
    URL ${CMAKE_CURRENT_SOURCE_DIR}/libconfig-1.4.8.tar.gz 
    IF(APPLE) 
     #Mac detected 
     PREFIX libconfig/libconfig-1.4.8 
    ENDIF(APPLE) 
    IF(UNIX) 
     PREFIX libconfig 
    ENDIF(UNIX) 

    CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-examples 
    # We patch in order to avoid building the tests. 
    # Otherwise compilation will fail due to relative paths used in libconfig. 
    PATCH_COMMAND patch < ${CMAKE_CURRENT_SOURCE_DIR}/libconfig.patch 
    BUILD_COMMAND make 
    INSTALL_COMMAND make install 
) 
+1

這似乎是一個問題的答案盡在其中。你可以在這裏回答你自己的問題,並接受它,如果沒有問題剩餘...如果你還有一個問題,請重新說明它,因爲它似乎沒有任何未答覆在這裏。 :-) – DLRdave

+0

感謝您的讚揚,我現在添加了我的問題答案。 – tune2fs

回答

5

我發現的問題:

第一是測試IF(UNIX),也適用於Mac OS X操作系統如此。

第二個是PREFIX不能改變。因此,解決方法是使用變量。

此代碼現在工作:

IF(UNIX) 
    SET(LIBCONFIG_PREFIX libconfig) 
ENDIF(UNIX) 
IF(APPLE) 
    SET(LIBCONFIG_PREFIX libconfig/libconfig-1.4.8)  
ENDIF(APPLE) 


INCLUDE(ExternalProject) 

EXTERNALPROJECT_ADD(
    libconfig 
    URL ${CMAKE_CURRENT_SOURCE_DIR}/libconfig-1.4.8.tar.gz 

    PREFIX ${LIBCONFIG_PREFIX} 

    CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-examples 
    # We patch in order to avoid building the tests. 
    # Otherwise compilation will fail due to relative paths used in libconfig. 
    PATCH_COMMAND patch < ${CMAKE_CURRENT_SOURCE_DIR}/libconfig.patch 
    BUILD_COMMAND make 
    INSTALL_COMMAND make install 
) 
相關問題