【问题标题】:How can I conditionally set a property for OpenCV dylib files with CMake?如何使用 CMake 有条件地为 OpenCV dylib 文件设置属性?
【发布时间】:2016-06-08 20:34:57
【问题描述】:

我试图在 OS X 下的不同目录中同时安装标准 OpenCV 和自定义版本。这样做时,我发现 OpenCV CMake 会导致在将库安装到非-标准路径(即/usr/local 以外的路径)。我可以通过在OpenCVModule.cmake 中添加一行来解决此问题:

set_target_properties(${the_module} PROPERTIES OUTPUT_NAME "${the_module}${OPENCV_DLLVERSION}" DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" COMPILE_PDB_NAME "${the_module}${OPENCV_DLLVERSION}" COMPILE_PDB_NAME_DEBUG "${the_module}${OPENCV_DLLVERSION}${OPENCV_DEBUG_POSTFIX}" ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMPILE_PDB_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib ## <--- Added this line )

我正在尝试将此更改贡献回 OpenCV 项目。但在CMAKE_INSTALL_PREFIX 设置为“/usr/local”的情况下,不应设置INSTALL_NAME_DIR。我试过添加if 声明:

set_target_properties(${the_module} PROPERTIES OUTPUT_NAME "${the_module}${OPENCV_DLLVERSION}" DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" COMPILE_PDB_NAME "${the_module}${OPENCV_DLLVERSION}" COMPILE_PDB_NAME_DEBUG "${the_module}${OPENCV_DLLVERSION}${OPENCV_DEBUG_POSTFIX}" ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMPILE_PDB_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} if(NOT ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local") ## <--- this always evaluates to FALSE INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib endif() )

我没有找到任何可以导致if 语句计算为true 的语法。有没有办法让CMake根据CMAKE_INSTALL_PREFIX的内容有条件地设置INSTALL_NAME_DIR

【问题讨论】:

    标签: opencv cmake


    【解决方案1】:

    CMake 命令不能嵌套:没有语法。但是你可以在“if”分支下执行任何命令:

    if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr/local")
        set_target_properties(${the_module} PROPERTIES
            INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib
        )
    endif()
    

    还要注意,在“if”子句中比较变量值的首选方式是使用变量名,而不是取消引用它。 CMake 将确定具有此名称的变量是否存在并自动取消引用它。此行为在 documentation 中针对“if”命令进行了描述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2016-12-02
      相关资源
      最近更新 更多