Dav*_*olm 35 macos macports cmake
我正在尝试构建我们的一些软件,这些软件专门在Linux上运行,在MacOS X上运行.我们正在使用CMake并安装了MacPorts,因此我可以轻松地将CMake与我们依赖的一些第三方库一起使用.
现在的问题是,CMake默认情况下似乎没有从MacPorts查找库,因此我们的几个目标都被禁用,因为它无法找到所有在/ opt/local中的依赖项.
我如何指示CMake也从MacPorts中寻找包含和库?
Chr*_*uns 33
将/ opt/local/lib以及任何其他可能的安装路径添加到CMakeLists.txt文件中由cmake搜索的路径集中:
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /opt/local/lib)
Run Code Online (Sandbox Code Playgroud)
这会将/ opt/local/lib附加到cmake搜索库的路径集.设置变量后,此CMAKE_LIBRARY_PATH技术将影响所有find_library命令.
对于更加手术,逐库的方法,修改单个find_library命令:
find_library(Foo foo
PATHS /opt/local/lib)
Run Code Online (Sandbox Code Playgroud)
请注意,这不是硬编码/ opt/local/lib作为查找库的唯一位置.相反,它只是将/ opt/local/lib附加到搜索库的位置集.我经常最终添加许多这样的路径,覆盖我所知道的所有机器上观察到的位置.有关此主题的更多变体,请参阅find_library文档.
您可能还希望更改CMAKE_INCLUDE_PATH,这会影响find_file()和find_path()命令的行为.
Dav*_*olm 15
我为" Darwin " 添加了一个工具链文件,它添加了必要的包含和库路径.我希望有一些更自动的东西,但至少它解决了这个问题.
darwin.cmake:
SET(CMAKE_SYSTEM_NAME Darwin)
# Add MacPorts
INCLUDE_DIRECTORIES(/opt/local/include)
LINK_DIRECTORIES(/opt/local/lib)
Run Code Online (Sandbox Code Playgroud)
CMake需要尊重DYLD_LIBRARY_PATH环境变量,这相当于LD_LIBRARY_PATHLinux 上的环境变量.您DYLD_LIBRARY_PATH需要有正确的路径来查找MacPorts安装的库.
| 归档时间: |
|
| 查看次数: |
64835 次 |
| 最近记录: |