Linux cmake:根据操作系统更改EXTERNALPROJECT\u ADD中的前缀

Linux cmake:根据操作系统更改EXTERNALPROJECT\u ADD中的前缀,linux,macos,cmake,Linux,Macos,Cmake,我需要根据操作系统更改以下代码中的cmake前缀 它是这样尝试的: 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)

我需要根据操作系统更改以下代码中的cmake前缀

它是这样尝试的:

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
)
INCLUDE(外部项目)
外部项目添加(
libconfig
URL${CMAKE\u CURRENT\u SOURCE\u DIR}/libconfig-1.4.8.tar.gz
如果(苹果)
#检测到Mac
前缀libconfig/libconfig-1.4.8
ENDIF(苹果)
IF(UNIX)
前缀libconfig
ENDIF(UNIX)
CONFIGURE_命令/CONFIGURE--prefix=--禁用示例
#我们使用补丁来避免构建测试。
#否则,由于libconfig中使用了相对路径,编译将失败。
PATCH_命令PATCH<${CMAKE_CURRENT_SOURCE_DIR}/libconfig.PATCH
生成命令make
INSTALL\u命令make INSTALL
)
我发现了以下问题:

首先,测试IF(UNIX)对于macosx操作系统也是正确的

第二个原因是前缀不能改变。因此,解决方法是使用变量

此代码现在可以工作:

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
)
IF(UNIX)
SET(LIBCONFIG_前缀LIBCONFIG)
ENDIF(UNIX)
如果(苹果)
SET(LIBCONFIG_前缀LIBCONFIG/LIBCONFIG-1.4.8)
ENDIF(苹果)
包括(外部项目)
外部项目添加(
libconfig
URL${CMAKE\u CURRENT\u SOURCE\u DIR}/libconfig-1.4.8.tar.gz
前缀${LIBCONFIG_PREFIX}
CONFIGURE_命令/CONFIGURE--prefix=--禁用示例
#我们使用补丁来避免构建测试。
#否则,由于libconfig中使用了相对路径,编译将失败。
PATCH_命令PATCH<${CMAKE_CURRENT_SOURCE_DIR}/libconfig.PATCH
生成命令make
INSTALL\u命令make INSTALL
)

这似乎是一个集问题和答案于一体的问题。你可以在这里回答你自己的问题,如果没有问题的话就接受它。。。如果您仍然有问题,请重新措辞,因为这里似乎没有任何问题没有答案。:-)谢谢你的表扬,我现在已经补充了我的问题的答案。