Lucian Radu Teodorescu
Lucian Radu Teodorescu

Reputation: 151

Cmake errors when using LLVM 5.0.0 from brew

I'm trying to use the stock LLVM 5.0.0 provided by Homebrew (MacOS High Sierra 10.13.3). LLVM is installed on my machine under /usr/local/Cellar/llvm/5.0.0/

Now, in my project, I have the following lines in CMakeLists.txt:

# Find the LLVM library
find_package( LLVM 5.0.0 REQUIRED )
include_directories( "${LLVM_INCLUDE_DIRS}" )
link_directories(${LLVM_LIBRARY_DIRS})
message(STATUS "LLVM include dirs: ${LLVM_INCLUDE_DIRS}")

If I run CMake without any parameters, I get:

CMake Error at CMakeLists.txt:74 (find_package): By not providing "FindLLVM.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "LLVM", but CMake did not find one.

Could not find a package configuration file provided by "LLVM" (requested version 5.0.0) with any of the following names:

LLVMConfig.cmake
llvm-config.cmake

Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set "LLVM_DIR" to a directory containing one of the above files. If "LLVM" provides a separate development package or SDK, be sure it has been installed.

It tells me that it couldn't find LLVM. So, I pass the path to the LLVM_DIR, like this:

cmake .. -DLLVM_DIR=/usr/local/Cellar/llvm/5.0.0/share/cmake/modules/

I would expect everything to work. Instead I get the following error:

CMake Error at CMakeLists.txt:74 (find_package): Could not find a configuration file for package "LLVM" that is compatible with requested version "5.0.0".

The following configuration files were considered but not accepted:

/usr/local/Cellar/llvm/5.0.0/share/cmake/modules/llvm-config.cmake, version: unknown

For some reason the version is not present anywhere in the share/cmake/modules directory.

How can I fix this, without changing the brew-installed LLVM?

Upvotes: 3

Views: 4671

Answers (1)

Lucian Radu Teodorescu
Lucian Radu Teodorescu

Reputation: 151

Found the answer. I was passing a wrong path to LLVM_DIR. I just have to use another directory (buried in lib, not in share):

cmake .. -DLLVM_DIR=/usr/local/Cellar/llvm/5.0.0/lib/cmake/llvm/

Not sure why brew decided to install 2 versions of CMake helpers for LLVM, one in share and one in lib.

Upvotes: 6

Related Questions