У меня есть следующий shell-скрипт:
xcodebuild -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=`sysctl -n hw.ncpu` \
BUILD_DIR=../../Libraries/usr/lib \
CONFIGURATION_BUILD_DIR=../../Libraries/usr/lib \
-project ./libusb/Xcode/libusb.xcodeproj \
-target "libusb" \
-configuration Release \
-xcconfig "./libusb_osx_config.xcconfig"
для компиляции LibUSB для MacOS через командную строку с включенными определенными флагами в моем .xcconfig
:
#include "./libusb/Xcode/libusb.xcconfig"
ARCHS = $(ARCHS_STANDARD)
SDKROOT = macosx
SUPPORTED_PLATFORMS = macosx
VALID_ARCHS = i386 x86_64
MACOSX_DEPLOYMENT_TARGET = 10.14
SKIP_INSTALL = YES
INSTALL_PATH = "./libusb/build"
CODE_SIGNING_ALLOWED = NO
OTHER_LDFLAGS = -framework IOKit
LD_DYLIB_INSTALL_NAME = @rpath/libusb-1.0.0.dylib
PRODUCT_NAME = libusb-1.0.0
В ./Libraries/usr/lib
У меня есть измененная версия IOKit.framework
для iOS (не MacOS)!
Однако, если я запускаю приведенный выше скрипт с этой точной конфигурацией, он говорит мне:
ld: symbol(s) not found for architecture x86_64
для IOKit, потому что он пытается соединиться с моей модифицированной платформой iOS (ARM) вместо системной платформы MacOS. Если я удалил CONFIGURATION_BUILD_DIR
, она связывается с системной платформой вместо моей пользовательской.
Есть ли способ заставить его всегда связываться с системной платформой, даже если указан CONFIGURATION_BUILD_DIR
?Я использую только CONFIGURATION_BUILD_DIR
, поэтому он поместит libusb-1.0.0.dylib
в эту локальную папку ./Libraries/usr/lib
.Без него он помещается в папку Release
.
Есть идеи?