TL : DR - Chromium을 제 3 자 Mac OS X 프레임 워크에 제대로 연결하기 위해 Build.gn 파일 내에서 올바른 호출은 무엇입니까? Contents/Frameworks/app 번들 경로에 있음)?Chromium : GN/Ninja - Build.gn을 통해 OS X 프레임 워크에 연결하지 못함
내 Build.gn 및 경로 설정은 아래를 참조하십시오.
제 3 자 라이브러리를 통한 비디오 캡처에 대한 지원을 추가하여 Chrome 브라우저를 사용자 정의하고 있습니다. 필자는 기존 Build.gn 파일을 수정하여 제 3 자 deps를 찾고 새로운 소스를 컴파일했습니다.
미디어/캡처/비디오/맥/DEPS : 필자 나의 새로운 종속성을 포함하는 기존 크롬 Build.gn을 수정
include_rules = [
"+third_party/decklink",
"+third_party/Syphon",
]
제대로 내 새로운 Build.gn을 찾아 내 프레임 워크, 사이펀 :
내 Build.gn은 다음과 같습니다 :
if (is_mac) {
loadable_module("Syphon") {
lib_dirs = ["//third_party/Syphon/mac/"]
libs = ["Syphon.framework"]
}
컴파일 작품, 그러나 제가 포함하고있는 Framework의 객체를 사용하려고하면 건물이 실패합니다. 나는 OS X/Xcode에서 이러한 링크 오류에 익숙해졌지만 Ninja/GN에서는 오류를 해결하는 올바른 방법이 확실하지 않습니다.
닌자의 출력 :
주 - 얻어진 링커 인수 적절히 -L/경로 Syphon.framework 보유/행/THIRD_PARTY/사이펀/MAC/그러나 -framework를 사용하는 링커 플래그가 명령이 사이 폰을 찾지 못합니다.
나는 (ldflags와 같은) 다른 Build.gn 명령을 사용하려고 시도했지만 모두 동일한 문제가 발생합니다.
감사합니다.
ninja -C out/Default
ninja: Entering directory `out/Default'
[4/5095] SOLINK libcapture.dylib libcapture.dylib.TOC
FAILED: libcapture.dylib libcapture.dylib.TOC
if [ ! -e "./libcapture.dylib" -o ! -e "./libcapture.dylib.TOC" ] || otool -l "./libcapture.dylib" | grep -q LC_REEXPORT_DYLIB ; then TOOL_VERSION=1484604693 ../../build/toolchain/mac/linker_driver.py ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,-install_name,@rpath/"libcapture.dylib" -stdlib=libc++ -arch x86_64 -Werror -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9 -Wl,-ObjC -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/../../.. -o "./libcapture.dylib" -Wl,-filelist,"./libcapture.dylib.rsp" -framework AVFoundation -framework CoreFoundation -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework Foundation -framework IOKit ./libbase.dylib ./libbase_i18n.dylib ./libmedia.dylib ./libskia.dylib ./libdisplay.dylib ./libgfx.dylib ./libicui18n.dylib ./libicuuc.dylib ./libshared_memory_support.dylib ./libbindings.dylib ./libmojo_public_system_cpp.dylib ./libmojo_public_system.dylib ./libdisplay_types.dylib ./libgeometry.dylib ./librange.dylib && { otool -l "./libcapture.dylib" | grep LC_ID_DYLIB -A 5; nm -gP "./libcapture.dylib" | cut -f1-2 -d' ' | grep -v U$$; true; } > "./libcapture.dylib.TOC"; else TOOL_VERSION=1484604693 ../../build/toolchain/mac/linker_driver.py ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,-install_name,@rpath/"libcapture.dylib" -stdlib=libc++ -arch x86_64 -Werror -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9 -Wl,-ObjC -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/../../.. -o "./libcapture.dylib" -Wl,-filelist,"./libcapture.dylib.rsp" -framework AVFoundation -framework CoreFoundation -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework Foundation -framework IOKit ./libbase.dylib ./libbase_i18n.dylib ./libmedia.dylib ./libskia.dylib ./libdisplay.dylib ./libgfx.dylib ./libicui18n.dylib ./libicuuc.dylib ./libshared_memory_support.dylib ./libbindings.dylib ./libmojo_public_system_cpp.dylib ./libmojo_public_system.dylib ./libdisplay_types.dylib ./libgeometry.dylib ./librange.dylib && { otool -l "./libcapture.dylib" | grep LC_ID_DYLIB -A 5; nm -gP "./libcapture.dylib" | cut -f1-2 -d' ' | grep -v U$$; true; } > "./libcapture.dylib.tmp" && if ! cmp -s "./libcapture.dylib.tmp" "./libcapture.dylib.TOC"; then mv "./libcapture.dylib.tmp" "./libcapture.dylib.TOC" ; fi; fi
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_SyphonServerDirectory", referenced from:
objc-class-ref in video_capture_device_syphon_mac.o
"_SyphonServerDescriptionAppNameKey", referenced from: media::VideoCaptureDeviceSyphonMac::EnumerateDevices(std::__1::vector<media::VideoCaptureDeviceDescriptor, std::__1::allocator<media::VideoCaptureDeviceDescriptor> >*) in video_capture_device_syphon_mac.o "_SyphonServerDescriptionNameKey", referenced from:media::VideoCaptureDeviceSyphonMac::EnumerateDevices(std::__1::vector<media::VideoCaptureDeviceDescriptor, std::__1::allocator<media::VideoCaptureDeviceDescriptor> >*) in video_capture_device_syphon_mac.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Traceback (most recent call last):
File "../../build/toolchain/mac/linker_driver.py", line 229, in <module>
Main(sys.argv)
File "../../build/toolchain/mac/linker_driver.py", line 79, in Main
subprocess.check_call(compiler_driver_args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['../../third_party/llvm-build/Release+Asserts/bin/clang++', '-shared', '-Wl,-install_name,@rpath/libcapture.dylib', '-stdlib=libc++', '-arch', 'x86_64', '-Werror', '-isysroot', '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk', '-mmacosx-version-min=10.9', '-Wl,-ObjC', '-Wl,-rpath,@loader_path/.', '-Wl,-rpath,@loader_path/../../..', '-o', './libcapture.dylib', '-Wl,-filelist,./libcapture.dylib.rsp', '-framework', 'AVFoundation', '-framework', 'CoreFoundation', '-framework', 'CoreGraphics', '-framework', 'CoreMedia', '-framework', 'CoreVideo', '-framework', 'Foundation', '-framework', 'IOKit', './libbase.dylib', './libbase_i18n.dylib', './libmedia.dylib', './libskia.dylib', './libdisplay.dylib', './libgfx.dylib', './libicui18n.dylib', './libicuuc.dylib', './libshared_memory_support.dylib', './libbindings.dylib', './libmojo_public_system_cpp.dylib', './libmojo_public_system.dylib', './libdisplay_types.dylib', './libgeometry.dylib', './librange.dylib']' returned non-zero exit status 1
[13/5095] CXX obj/third_party/WebKit/Source/wtf/wtf_unittests/ListHashSetTest.o
ninja: build stopped: subcommand failed.