【发布时间】: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?
【问题讨论】: