You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下CMake FetchContent_Declare构建libiio的路径异常问题

解决libiio通过FetchContent构建时的framework路径错误问题

问题重现

我的CMake配置代码如下:

cmake_minimum_required(VERSION 3.10)
include(FetchContent)
project(qluto4)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

message(STATUS "Fetching libiio from github")
FetchContent_Declare(
    libiio
    GIT_REPOSITORY https://github.com/analogdevicesinc/libiio
    GIT_TAG main
)

include_directories(build/_deps/libiio-build)

FetchContent_MakeAvailable(libiio)

执行构建时触发以下错误:

...
[ 30%] Built target iio
[ 31%] Building C object _deps/libiio-build/CMakeFiles/iio-compat.dir/compat.c.o
[ 32%] Building C object _deps/libiio-build/CMakeFiles/iio-compat.dir/dynamic-unix.c.o
[ 34%] Linking C shared library iio.framework/iio
Fixup Current symbolic link
/bin/sh: line 0: cd: /Users/myzinsky/Programming/qluto4/build/iio.framework/Versions: No such file or directory
make[2]: *** [_deps/libiio-build/iio.framework/Versions/0.99/iio] Error 1
make[2]: *** Deleting file `_deps/libiio-build/iio.framework/Versions/0.99/iio'
make[1]: *** [_deps/libiio-build/CMakeFiles/iio-compat.dir/all] Error 2
make: *** [all] Error 2

实际核查发现,iio.framework实际生成在build/_deps/libiio-build/iio.framework路径下,但构建脚本错误地尝试访问build/iio.framework/Versions目录,路径不匹配导致构建失败。

解决方案

针对macOS平台下CMake构建framework的路径偏差问题,可通过以下几种方式修复:

  • 指定framework生成路径
    在FetchContent_MakeAvailable(libiio)之前添加配置,强制libiio的framework生成到正确的子目录:
set(CMAKE_FRAMEWORK_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/_deps/libiio-build" CACHE PATH "Framework install prefix" FORCE)
  • 禁用framework,改用标准动态库
    如果不需要framework格式,直接强制生成普通动态库:
set(BUILD_SHARED_LIBS ON)
set(CMAKE_FRAMEWORK OFF)

将上述两行添加到FetchContent_Declare之前,让libiio以.dylib形式构建,规避framework路径问题。

  • 覆盖libiio自身的构建选项
    libiio提供BUILD_FRAMEWORK配置项,可显式关闭:
FetchContent_Declare(
    libiio
    GIT_REPOSITORY https://github.com/analogdevicesinc/libiio
    GIT_TAG main
    OVERRIDE_FIND_PACKAGE
)
set(BUILD_FRAMEWORK OFF CACHE BOOL "Build libiio as framework" FORCE)

通过FORCE参数覆盖libiio内部的默认设置,直接禁用framework构建逻辑。

内容的提问来源于stack exchange,提问作者Matthias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:34:54