Как изменить порядок компиляции с cocoapods?

Для моего проекта xcode у меня настроены cocoapods, где он использует Eigen 3.2.5 из моего клонированного репозитория. У меня это настроено где

  "source_files": ["Eigen/*", "Eigen/**/*"],
"public_header_files": ["Eigen/*", "Eigen/**/*"],

потому что кажется, что если у меня есть другой проект, который включает этот проект, он не будет работать, если я не сделаю эти файлы общедоступными.

Однако всякий раз, когда я делаю такую ​​установку, LLVM 7.0, кажется, пытается получить неправильные заголовочные файлы. Например, у меня есть Block.h в моем eigen Pod, и он пытается скомпилировать C ++ Block.h за UIKit (что полностью объективно-C и, конечно, он потерпит неудачу, потому что в eigen есть тонна кода C ++ Block.h). Обратите внимание, что UIKit также использует Block.h (то же имя, что и в Eigen), но, очевидно, речь идет о Block.h это полностью в Objective-C.

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:11:9: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:11:

Как мне это исправить, чтобы UIKit.h ищет в правильном месте для своего Block.h а не внутри моего собственного кокоапода?

В качестве альтернативы, как мне настроить мой собственный Cocoapod Eigen так, чтобы, если Проект A использует собственный, но Проект B использует проект A как Cocoapod, то проект B НАСТОЯЩИЙ находит собственный и не жалуется, что «Собственные файлы, такие как Eigen / Dense не могут быть найденным»?

0

Решение

В случае, если кому-то интересно, решение состояло в том, чтобы назвать все открытые заголовочные файлы с соответствующим окончанием файла (Dense -> Dense.h). Кроме того, после этого у меня есть рабочая версия Podspecs, которой я поделюсь, так как это заняло у меня больше недели, чтобы начать работать.

Pod::Spec.new do |s|
s.name    = "eigen"s.version = "3.2.5"s.summary = "Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms."s.homepage    = "http://eigen.tuxfamily.org/index.php?title=Main_Page"s.license = { :type => "MPL2",
:file => "COPYING.LGPL" }
s.author  = "Benoît Jacob", "Gaël Guennebaud"s.source  = { :git => "YOUR OWN CLONED GIT REPO FROM MERCURIAL", :tag => "3.2.5" }

s.ios.deployment_target = "5.0"
s.compiler_flags = '-DEIGEN_MPL2_ONLY'

s.source_files = "Eigen/*.*", "Eigen/**/*.*"s.public_header_files = 'Eigen/*.h'
s.header_mappings_dir = 'Eigen'

s.dependency 'boost/numeric-includes', '~> 1.59.1'
s.dependency 'boost/preprocessor-includes', '~> 1.59.1'

s.xcconfig = {
'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/eigen"',
}
end
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector