#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)
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. Похоже, это вопрос и ответ одновременно. Вы могли бы ответить на свой собственный вопрос здесь и принять его, если не осталось вопросов… Если у вас все еще есть вопрос, пожалуйста, перефразируйте его, потому что, похоже, здесь нет ничего без ответа. 🙂
2. Спасибо за похвалу, теперь я добавил свой ответ на свою проблему.
Ответ №1:
Я обнаружил проблемы:
Во-первых, проверка IF (UNIX) также верна для операционных систем Mac OS X.
Во-вторых, каким-то образом ПРЕФИКС не может быть изменен. Поэтому обходным путем является использование переменной.
Теперь этот код работает:
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
)