说明:
我正在使用CMake开发一个C++项目,以构建一个依赖于多个依赖项的Node.js插件,包括CoreAudio框架。当我尝试使用CMake和ninja构建项目时,我在macOS上遇到了一个问题。错误消息如下:
ninja: error: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/System/Library/Frameworks/CoreAudio.framework/CoreAudio', needed by 'Release/addon.node', missing and no known rule to make it.
字符串
我已经验证了CoreAudio框架存在于我的系统上,并且我已经在CMakeLists.txt文件中设置了正确的路径。但是,构建系统似乎无法在构建过程中定位框架。
cmake_minimum_required(VERSION 3.15)
project (addon)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
set(mediasuite_home .)
get_filename_component(MEDIASUITE_ABSOLUTE_PATH ${mediasuite_home} ABSOLUTE)
if(APPLE)
set(ENV{PKG_CONFIG_PATH} "${MEDIASUITE_ABSOLUTE_PATH}/deps/ffmpeg/macosx/lib/pkgconfig")
elseif(UNIX)
set(ENV{PKG_CONFIG_PATH} "${MEDIASUITE_ABSOLUTE_PATH}/deps/ffmpeg/linux/lib/pkgconfig")
elseif(WIN32)
set(ENV{PKG_CONFIG_PATH} "${MEDIASUITE_ABSOLUTE_PATH}/deps/ffmpeg/windows/lib/pkgconfig")
else()
message(FATAL_ERROR "Unsupported operating system")
endif()
find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC REQUIRED IMPORTED_TARGET libavcodec)
pkg_check_modules(AVFORMAT REQUIRED IMPORTED_TARGET libavformat)
pkg_check_modules(AVUTIL REQUIRED IMPORTED_TARGET libavutil)
pkg_check_modules(AVFILTER REQUIRED IMPORTED_TARGET libavfilter)
pkg_check_modules(AVDEVICE REQUIRED IMPORTED_TARGET libavdevice)
pkg_check_modules(SWRESAMPLE REQUIRED IMPORTED_TARGET libswresample)
pkg_check_modules(SWSCALE REQUIRED IMPORTED_TARGET libswscale)
include_directories(${CMAKE_JS_INC})
file(GLOB SOURCE_FILES "src/*.cpp" "src/*.h")
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
if(APPLE)
find_library(CORE_AUDIO CoreAudio REQUIRED)
if(NOT CORE_AUDIO)
message(FATAL_ERROR "CoreAudio framework not found")
else()
message(STATUS "CoreAudio framework found: ${CORE_AUDIO}")
endif()
find_library(CORE_MEDIA CoreMedia REQUIRED)
find_library(VIDEO_TOOLBOX VideoToolBox REQUIRED)
find_library(AUDIO_TOOLBOX AudioToolBox REQUIRED)
find_library(CORE_FOUNDATION CoreFoundation REQUIRED)
find_library(SECURITY Security REQUIRED)
find_library(CORE_SERVICES CoreServices REQUIRED)
set(
frameworks
${CORE_AUDIO}/CoreAudio
${CORE_MEDIA}/CoreMedia
${VIDEO_TOOLBOX}/VideoToolbox
${AUDIO_TOOLBOX}/AudioToolbox
${CORE_FOUNDATION}/CoreFoundation
${SECURITY}/Security
${CORE_SERVICES}/CoreServices
)
elseif(UNIX)
message(STATUS "UNIX OPERATING SYSTEM CONFIG")
elseif(WIN32)
message(FATAL_ERROR "WINDOWS OPERATING SYSTEM CONFIG")
else()
message(FATAL_ERROR "Unsupported operating system")
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
target_link_libraries(
${PROJECT_NAME}
${CMAKE_JS_LIB}
${AVCODEC_LDFLAGS}
${AVFORMAT_LDFLAGS}
${AVFILTER_LDFLAGS}
${AVDEVICE_LDFLAGS}
${AVUTIL_LDFLAGS}
${SWRESAMPLE_LDFLAGS}
${SWSCALE_LDFLAGS}
${frameworks}
)
execute_process(COMMAND node -p "require('node-addon-api').include"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE NODE_ADDON_API_DIR
)
string(REPLACE "\n" "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR})
string(REPLACE "\"" "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR})
target_include_directories(
${PROJECT_NAME} PRIVATE
${NODE_ADDON_API_DIR}
${AVCODEC_INCLUDE_DIRS}
${AVFORMAT_INCLUDE_DIRS}
${AVFILTER_INCLUDE_DIRS}
${AVDEVICE_INCLUDE_DIRS}
${AVUTIL_INCLUDE_DIRS}
${SWRESAMPLE_INCLUDE_DIRS}
${SWSCALE_INCLUDE_DIRS}
)
add_definitions(-DNAPI_VERSION=3)
型
我也试过"-framework CoreAudio" and ${CORE_AUDIO}
我得到
-- CoreAudio framework found: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/System/Library/Frameworks/CoreAudio.framework
-- Configuring done (0.9s)
-- Generating done (0.1s)
-- Build files have been written to: /Users/vetagirihrushikesh/Desktop/Maigha/CoreProducts/Development/FFMPEG_BUILD/BuildScriptForMacOSX/ElectronReactBoilerPlate/FFMPEGNAPIELECTRON/Nodejs-Napi-Addon-Using-Cmake/build
info CMD BUILD
info RUN cmake --build "/Users/vetagirihrushikesh/Desktop/Maigha/CoreProducts/Development/FFMPEG_BUILD/BuildScriptForMacOSX/ElectronReactBoilerPlate/FFMPEGNAPIELECTRON/Nodejs-Napi-Addon-Using-Cmake/build" --config Release
[2/2] Linking CXX shared library Release/addon.node
FAILED: Release/addon.node
: && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -D__STDC_CONSTANT_MACROS -g -O3 -DNDEBUG -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -o Release/addon.node -install_name @rpath/addon.node CMakeFiles/addon.dir/src/example.cpp.o -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lavcodec -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -liconv -lm -ldav1d -framework -lAudioToolbox -lfdk-aac -lmp3lame -lm -lopus -lSvtAv1Enc -lpthread -lm -lx264 -lpthread -lm -ldl -lx265 -lc++ -ldl -pthread -lz -framework -lVideoToolbox -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -lswresample -lm -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lavformat -lm -lbz2 -lz -Wl,-framework,CoreFoundation -Wl,-framework,Security -lavcodec -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -liconv -lm -ldav1d -framework -lAudioToolbox -lfdk-aac -lmp3lame -lm -lopus -lSvtAv1Enc -lpthread -lm -lx264 -lpthread -lm -ldl -lx265 -lc++ -ldl -pthread -lz -framework -lVideoToolbox -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -lswresample -lm -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libass/0.17.1/lib -L/opt/homebrew/Cellar/libunibreak/5.1/lib -L/opt/homebrew/Cellar/harfbuzz/8.3.0/lib -L/opt/homebrew/Cellar/glib/2.78.1/lib -L/opt/homebrew/opt/gettext/lib -L/opt/homebrew/Cellar/pcre2/10.42/lib -L/opt/homebrew/Cellar/graphite2/1.3.14/lib -L/opt/homebrew/Cellar/fribidi/1.0.13/lib -L/opt/homebrew/opt/freetype/lib -L/opt/homebrew/opt/libpng/lib -L/opt/homebrew/opt/freetype/lib -L/opt/homebrew/opt/libpng/lib -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lavfilter -framework -lOpenGL -pthread -lm -lass -liconv -framework -lApplicationServices -framework -lCoreFoundation -lunibreak -lharfbuzz -lm -framework -lApplicationServices -lglib-2.0 -lintl -liconv -lm -framework -lFoundation -framework -lCoreFoundation -framework -lAppKit -framework -lCarbon -lpcre2-8 -D_THREAD_SAFE -pthread -lgraphite2 -lfribidi -lfreetype -lbz2 -lpng16 -lz -framework -lMetal -framework -lVideoToolbox -framework -lCoreImage -framework -lAppKit -lfreetype -lbz2 -lpng16 -lz -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -lswscale -lm -lpostproc -lm -lavformat -lm -lbz2 -lz -Wl,-framework,CoreFoundation -Wl,-framework,Security -lavcodec -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -liconv -lm -ldav1d -framework -lAudioToolbox -lfdk-aac -lmp3lame -lm -lopus -lSvtAv1Enc -lpthread -lm -lx264 -lpthread -lm -ldl -lx265 -lc++ -ldl -pthread -lz -framework -lVideoToolbox -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -lswresample -lm -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -L/opt/homebrew/lib -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libass/0.17.1/lib -L/opt/homebrew/Cellar/libunibreak/5.1/lib -L/opt/homebrew/Cellar/harfbuzz/8.3.0/lib -L/opt/homebrew/Cellar/glib/2.78.1/lib -L/opt/homebrew/opt/gettext/lib -L/opt/homebrew/Cellar/pcre2/10.42/lib -L/opt/homebrew/Cellar/graphite2/1.3.14/lib -L/opt/homebrew/Cellar/fribidi/1.0.13/lib -L/opt/homebrew/opt/freetype/lib -L/opt/homebrew/opt/libpng/lib -L/opt/homebrew/opt/freetype/lib -L/opt/homebrew/opt/libpng/lib -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lavdevice -framework -lFoundation -framework -lAudioToolbox -framework -lCoreAudio -lm -framework -lAVFoundation -framework -lCoreVideo -framework -lCoreMedia -framework -lCoreGraphics -lxcb -lXau -lXdmcp -lxcb-shm -lxcb -lXau -lXdmcp -lxcb-shape -lxcb -lXau -lXdmcp -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lXau -lXdmcp -framework -lAudioToolbox -pthread -lSDL2 -lm -liconv -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-weak_framework,CoreHaptics -Wl,-weak_framework,GameController -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,CoreVideo -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal -lavfilter -framework -lOpenGL -pthread -lm -lass -liconv -framework -lApplicationServices -framework -lCoreFoundation -lunibreak -lharfbuzz -lm -framework -lApplicationServices -lglib-2.0 -lintl -liconv -lm -framework -lFoundation -framework -lCoreFoundation -framework -lAppKit -framework -lCarbon -lpcre2-8 -D_THREAD_SAFE -pthread -lgraphite2 -lfribidi -lfreetype -lbz2 -lpng16 -lz -framework -lMetal -framework -lVideoToolbox -framework -lCoreImage -framework -lAppKit -lfreetype -lbz2 -lpng16 -lz -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -lswscale -lm -lpostproc -lm -lavformat -lm -lbz2 -lz -Wl,-framework,CoreFoundation -Wl,-framework,Security -lavcodec -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -lvpx -lm -lpthread -liconv -lm -ldav1d -framework -lAudioToolbox -lfdk-aac -lmp3lame -lm -lopus -lSvtAv1Enc -lpthread -lm -lx264 -lpthread -lm -ldl -lx265 -lc++ -ldl -pthread -lz -framework -lVideoToolbox -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -lswresample -lm -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lswresample -lm -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -L/Users/vetagirihrushikesh/ffmpeg_build/lib -L/opt/homebrew/Cellar/libx11/1.8.7/lib -L/opt/homebrew/Cellar/libxcb/1.16/lib -L/opt/homebrew/Cellar/libxau/1.0.11/lib -L/opt/homebrew/Cellar/libxdmcp/1.1.4/lib -lswscale -lm -lavutil -pthread -lm -framework -lVideoToolbox -lX11 -lxcb -lXau -lXdmcp -framework -lCoreFoundation -framework -lCoreMedia -framework -lCoreVideo -framework -lCoreServices -Xlinker -framework -Xlinker CoreAudio -Xlinker -framework -Xlinker CoreMedia -Xlinker -framework -Xlinker VideoToolBox -Xlinker -framework -Xlinker AudioToolBox -Xlinker -framework -Xlinker CoreFoundation -Xlinker -framework -Xlinker Security -Xlinker -framework -Xlinker CoreServices -lavdevice -lCoreAudio -lAVFoundation -lCoreGraphics -lxcb-shm -lxcb-shape -lxcb-xfixes -lxcb-render -lSDL2 -lobjc -Xlinker -framework -Xlinker CoreAudio -Xlinker -framework -Xlinker CoreMedia -Xlinker -framework -Xlinker VideoToolBox -Xlinker -framework -Xlinker AudioToolBox -Xlinker -framework -Xlinker CoreFoundation -Xlinker -framework -Xlinker Security -Xlinker -framework -Xlinker CoreServices && :
ld: warning: ignoring duplicate libraries: '-lSDL2', '-lSvtAv1Enc', '-lX11', '-lXau', '-lXdmcp', '-lass', '-lavcodec', '-lavdevice', '-lavfilter', '-lavformat', '-lavutil', '-lbz2', '-lc++', '-ldav1d', '-ldl', '-lfdk-aac', '-lfreetype', '-lfribidi', '-lglib-2.0', '-lgraphite2', '-lharfbuzz', '-liconv', '-lintl', '-lm', '-lmp3lame', '-lobjc', '-lopus', '-lpcre2-8', '-lpng16', '-lpostproc', '-lpthread', '-lswresample', '-lswscale', '-lunibreak', '-lvpx', '-lx264', '-lx265', '-lxcb', '-lxcb-render', '-lxcb-shape', '-lxcb-shm', '-lxcb-xfixes', '-lz'
ld: library 'CoreAudio' not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
型
1条答案
按热度按时间wz8daaqr1#
这个CMAKE帮了我。
字符串