设置CMake的模块搜索路径

问题描述:

我写了一个CMake的模块找到libclang:设置CMake的模块搜索路径

find_path(LibClang_INCLUDE_DIR clang-c/Index.h) 
find_library(LibClang_LIBRARY NAMES clang) 

但我已经通过MacPorts的安装libclang到/opt/local/libexec/llvm-3.0/lib/opt/local/libexec/llvm-3.0/include。由于这不是一个正常的系统位置,所以CMake没有找到它。

显示CMake的最佳方式是什么?我怎样才能找出CMake在哪里搜索?我不认为将图书馆移动到更加正常的位置是一种选择,因为我不想将事情从MacPorts放置的位置移开,并且我的系统上还有Apple的官方clang二进制文件(不包括libclang)。

添加HINTS or PATHS flag以建议它搜索的位置。

如果您想要制定一个包含非标准位置的通用方法,您可以执行两项操作。一种是确保用户知道将非标准位置放在LD_LIBRARY_PATH环境变量上,然后建议将其作为find_pathfind_library的提示,并使用ENV LD_LIBRARY_PATH

另一种选择是放置一个自定义的环境变量,并告诉用户设置,如果它是非标准的。例如,CLANG_ROOT,并将其包含在提示中。

当然,你可以做到这一点,这将是最一般的。

+0

谢谢。你能指点我一个这样做的示例模块文件吗? – exclipy 2012-01-28 11:59:40

+0

FindBLAS,FindLAPACK,FindMPI,FindBoost和FindCurses都是我用来给HINTS find_library的。如果您查看FindHDF5,它还包含来自用户环境变量的HDF5_ROOT的提示。 – tpg2114 2012-01-28 13:03:17