fot*_*sky 21 macos makefile build cmake shared-libraries
我尝试在OS X(Yosemite)下构建一个基于CMake的软件,它可以在Fedora 21下成功构建.它使用了一堆库.两者都是像Boost这样的大型开放式文件,以及一些位于/ installation_folder/lib中的自编文件.我使用CMake版本3.3.0.
执行后
mkdir build
cd build
cmake .. -DCMAKE_C_COMPILER=/usr/local/Cellar/gcc/5.2.0/bin/gcc-5 -DCMAKE_CXX_COMPILER=/usr/local/Cellar/gcc/5.2.0/bin/g++-5 -DCMAKE_MODULE_PATH=${PWD}/../external/install/share/llvm/cmake
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
MACOSX_RPATH is not specified for the following targets:
ClangWrapper
Structure
WCETXML
This warning is for project developers. Use -Wno-dev to suppress it.
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt包含有关RPATH的以下行:
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
ENDIF("${isSystemDir}" STREQUAL "-1")
Run Code Online (Sandbox Code Playgroud)
我只能说这${CMAKE_INSTALL_PREFIX}/lib
确实是正确的路径,并且正确找到了像Boost这样的其他库.
忽略警告并继续在构建目录中使用"make"会导致链接错误.
我阅读了CMake Wiki RPATH处理文章,但我仍然无法区分这些路径变量及其在OS X上的正确使用.
fot*_*sky 26
set(CMAKE_MACOSX_RPATH 1)
在上述书面语句之前添加到CMakeLists.txt中,可以使警告消失.执行后的链接问题make
停留.这让我想到我的RPATH设置与我的链接问题无关.
然而,这个线程的问题已经解决了.关于在CMakeLists.txt中正确使用RPATH选项的解释仍然非常受欢迎!
归档时间: |
|
查看次数: |
23277 次 |
最近记录: |