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

标签 linux macos cmake

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

关于linux - cmake:根据操作系统更改 EXTERNALPROJECT_ADD 中的 PREFIX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7770583/

相关文章:

c - c中随机猜谜游戏中的if语句

ios - Grand Central Dispatch 无障碍

c++ - clang : warning: argument unused during compilation: '-stdlib=libc++'

c++ - 在 Mac m1 中从源代码构建 opencv

linux - lsof 显示什么?

linux - 如何永久启用终端输出到文件?

java - OS X 无法分离卷,hdiutil 错误

cmake - qtcreator cmake "No executable specified"

c - 使用内核模块锁定内部系统调用

swift - 如何更改 NSSwitch 的色调颜色?