cmake:根据操作系统更改EXTERNALPROJECT_ADD中的PREFIX

我需要根据操作系统在以下代码中更改cmake 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 ) 

我发现了这个问题:

第一个是测试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 )