系统模块出现问题,必须使用pkgConfig,pkgConfig包含标志定义。
ImageMagick(自酿)
我创建了两个包:CMagicWand,类型为system-module
…
我联系了此代码的作者,回复如下:
这里的问题是我们不允许pkg配置中的所有标志 文件,因为SwiftPM无法推理它们。我们有构建设置 即将提出的提案将解决这些问题。现在,你可以 使用swift build -Xcc -Xswiftc手动传递标志 -Xld
因此,暂时解决它的唯一正确方法是从.pc文件中替换标志,在构建导入这些包的项目时明确指定它们,并祈祷这些标志永远不会干扰,以防您有多个依赖项。
我为.pc文件创建了副本(是的,文件,里面有依赖项),删除了标志并从中创建了新的链接 在/ usr / local / lib目录/ pkgconfig 因为我不希望这种改变有任何副作用。与OS X上的ImageMagick完美配合,稍后将在Ubuntu上尝试。
谢谢你,Ankit!
我用以下参数解决了这个问题:
swift build -Xcc -I/usr/local/include/ImageMagick-7/MagickWand/ -Xcc -I/usr/local/include/ImageMagick-7/ -Xcc -DMAGICKCORE_HDRI_ENABLE=0 -Xcc -DMAGICKCORE_QUANTUM_DEPTH=16 -Xlinker -L/usr/local/lib
我认为你必须调整路径。
module.modulemap:
module CMagickWand [system] { header "shim.h" header "/usr/local/include/ImageMagick-7/MagickWand/MagickWand.h" link "MagickWand-7.Q16HDRI" export * }
link的值来自pkgConfig MagickWand.pc libname 。
libname
Package.swift:
import PackageDescription let package = Package( name: "CMagickWand" )
shim.h(不知道是否需要这个文件):
#include <stdio.h>