cmake

Cmake not building (Could NOT find Zstd (missing: ZSTD_LIBRARY ZSTD_INCLUDE_DIR))


I'm trying to install luanti from source for a project, but the cmake command isn't working (i'm on mac).

mkdir build
cd build
cmake .. \
    -DCMAKE_FIND_FRAMEWORK=LAST \
    -DCMAKE_INSTALL_PREFIX=../build/macos/ \
    -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE

make -j$(sysctl -n hw.logicalcpu)
make install

codesign --force --deep -s - --entitlements ../misc/macos/entitlements/debug.entitlements macos/luanti.app

It gives this error:

-- Looking for ZSTD_initCStream
-- Looking for ZSTD_initCStream - not found
CMake Error at /opt/homebrew/lib/python3.11/site-packages/cmake/data/share/cmake-4.0/Modules/FindPackageHandleStandardArgs.cmake:227 (message):
  Could NOT find Zstd (missing: ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
Call Stack (most recent call first):
  /opt/homebrew/lib/python3.11/site-packages/cmake/data/share/cmake-4.0/Modules/FindPackageHandleStandardArgs.cmake:591 (_FPHSA_FAILURE_MESSAGE)
  cmake/Modules/FindZstd.cmake:24 (find_package_handle_standard_args)
  src/CMakeLists.txt:267 (find_package)

Solution

  • I figured out the issue: I just changed the code in FindZstd.cmake to use the correct paths. Just in case anyone trying to build luanti from source finds this, here is the correct code (for apple silicon mac):

    find_path(ZSTD_INCLUDE_DIR zstd.h
      PATHS /opt/homebrew/include
      NO_DEFAULT_PATH)
    
    find_library(ZSTD_LIBRARY zstd
      PATHS /opt/homebrew/lib
      NO_DEFAULT_PATH)
    
    include(FindPackageHandleStandardArgs)
    find_package_handle_standard_args(Zstd REQUIRED_VARS ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
    
    mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)