参考yocto(四)——添加程序和脚本_caodongwang的博客-CSDN博客_yocto添加自己的程序
一、单文件代码添加编译
- adv@adv:/work/code/$ tree sources/meta-imx/meta-sdk/recipes-extended
- sources/meta-imx/meta-sdk/recipes-extended
- ├── hello
- │ ├── files
- │ │ └── helloworld.c
- │ └── hello.bb
-
-
- 11 directories, 15 files
hello.bb
- adv@adv:/work/code/$ cat sources/meta-imx/meta-sdk/recipes-extended/hello/hello.bb
- #hello.bb文件
- SUMMARY = "Simple helloworld application"
- SECTION = "examples"
- LICENSE = "MIT"
- LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
- # FILESPATH 为什么不要?思考一下,参考《bitbake工作流程》文章内容~~~
- #FILESPATH := "${THISDIR}/files:"
- SRC_URI = "file://helloworld.c"
-
- # 为什么要指定S变量?思考一下,参考《bitbake工作流程》文章内容~~~
- S = "${WORKDIR}"
-
- # 重载do_compile任务,编译工作就是下面这条命令,注意使用${CC}
- do_compile() {
- ${CC} ${LDFLAGS} helloworld.c -o helloworld
- }
-
- # 重载do_instal任务,安装编译成果helloworld
- do_install() {
- install -d ${D}${bindir}
- install -m 0755 helloworld ${D}${bindir}
- }
-
- # FILES 表示这个软件包,需要打包进映像的文件是helloworld,但决定这个软件包是否参与打包,需要在其他地方配置
- # FILES 为什么不要?思考一下,参考《bitbake工作流程》文章内容~~~
- #FILES_${PN} += " ${bindir}/helloworld "
- adv@adv:/work/code/$
helloworld.c
- adv@adv:/work/code/$ cat sources/meta-imx/meta-sdk/recipes-extended/hello/files/helloworld.c
- //helloworld.c文件
- #include <stdio.h>
-
- int main(int argc, char *argv[])
- {
- printf("Hello world!\n");
-
- return 0;
- }
编译后生成helloworld可执行文件,
编译命令:
bitbake hello -c compile -v -f
生成路径:
/work/code/build-imx-robot/tmp/work/cortexa53-crypto-poky-linux/hello/1.0-r0
如果需要增加到rootfs中可以在conf中增加
IMAGE_INSTALL_append += "hello"
进行全编译后,helloworld路径
tmp/work/imx8mpevk-poky-linux/imx-robot-sdk/1.0-r0/rootfs/usr/bin/helloworld
二、多文件代码编译
文件列表
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended$ tree hellomake/
- hellomake/
- ├── files
- │ ├── helloworld.c
- │ ├── main.c
- │ └── Makefile
- └── hellomake.bb
-
- 1 directory, 4 files
增加后可以查看是否有对应的hellomake软件包,说明yocto识别到了软件包
- adv@adv:/work/code//build-imx-robot$ bitbake -s | grep hello*
- go-helloworld :0.1-r0
- hello :1.0-r0
- hellomake :1.0-r0
- python3-configshell-fb :1.1.29-r0
- rqt-shell :1.0.2-1-r0
main.c
- adv@adv:/work/code//sources/meta-imx/meta-sdk/recipes-extended/hellomake$ cat files/main.c
- #include
-
- extern void myhello(void);
-
- int main(int argc, char *argv[])
- {
- myhello();
- return 0;
- }
helloworld.c
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended/hellomake$ cat files/helloworld.c
- #include
-
- int myhello(int argc, char *argv[])
- {
- printf("Hello world!\n");
-
- return 0;
- }
hellomake.bb
- adv@adv:/work/code//sources/meta-imx/meta-sdk/recipes-extended/hellomake$ cat hellomake.bb
- #hellomake.bb文件
- SUMMARY = "Simple hellomake application"
- SECTION = "examples"
- LICENSE = "MIT"
- LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
- SRC_URI = " \
- file://main.c \
- file://helloworld.c \
- file://Makefile \
- "
-
- S = "${WORKDIR}"
-
- EXTRA_OEMAKE = " 'CC=${CC}' 'CFLAGS=${CFLAGS}' 'LDFLAGS=${LDFLAGS}' "
- EXTRA_OEMAKE_append = " 'DESTDIR=${D}/${bindir}' "
- #上面这条语句可以不要,下面语句改为oe_runmake DESTDIR=${D}/${bindir} install即可
- do_install() {
- oe_runmake install
- }
-
- # FILES 表示这个软件包,需要打包进映像的文件是hellomake,但决定这个软件包是否参与打包,需要在其他地方配置
- #FILES_${PN} += " ${bindir}/hellomake "
使用bitbake hellomake编译生成路径
./tmp/work/cortexa53-crypto-poky-linux/hellomake/1.0-r0/image/usr/bin/hellomake
三、cmake代码编译
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended/hellocmake$ tree
- .
- ├── files
- │ ├── CMakeLists.txt
- │ └── src
- │ ├── helloworld.c
- │ └── main.c
- └── hellocmake.bb
-
- 2 directories, 4 files
hellworld.c和main.c与上面一样
CMakeLists.txt
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended/hellocmake$ cat files/CMakeLists.txt
- #CMakeLists.txt文件
- cmake_minimum_required (VERSION 3.0)
- project(hellocmake)
-
- set(SRC_LIST ./src/helloworld.c ./src/main.c)
- add_executable(hellocmake ${SRC_LIST})
-
- install(TARGETS hellocmake DESTINATION ${CMAKE_INSTALL_PREFIX}/sbin)
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended/hellocmake$ cat hellocmake.bb
- #hellocmake.bb文件
- SUMMARY = "Simple hellocmake application"
- SECTION = "examples"
- LICENSE = "MIT"
- LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
- #继承cmake类
- inherit cmake
-
- SRC_URI = " \
- file://src/main.c \
- file://src/helloworld.c \
- file://CMakeLists.txt \
- "
-
- S = "${WORKDIR}"
-
- # FILES 表示这个软件包,需要打包进映像的文件是hellomake,但决定这个软件包是否参与打包,需要在其他地方配置
- #FILES_${PN} += " ${sbindir}/hellocmake "
进入hellocmake/files目录下执行cmake .命令,再执行make命令,确保编译无误,然后返回yocto工程目录顶层在进行编译
bitbake hellocmake
./tmp/work/cortexa53-crypto-poky-linux/hellocmake/1.0-r0/image/usr/sbin/hellocmake
四、Autotools代码编译
- adv@adv:/work/code//sources/meta-imx/meta-sdk/recipes-extended/helloauto$ tree
- .
- ├── files
- │ ├── configure.ac
- │ ├── Makefile.am
- │ └── src
- │ ├── helloworld.c
- │ ├── main.c
- │ └── Makefile.am
- └── helloauto.bb
-
- 2 directories, 6 files
在helloauto/files目录下执行 命令,确保编译执行无误,然后返回yocto工程目录顶层。
autoreconf --install && ./configure && make && ./src/helloauto
bitbake helloauto
./tmp/work/cortexa53-crypto-poky-linux/helloauto/1.0-r0/image/usr/bin/helloauto
五、添加已经有的软件包
CORE_IMAGE_EXTRA_INSTALL += "xxx"
六、添加脚本
- adv@adv:/work/code//sources/meta-imx/meta-sdk/recipes-extended/myscript$ tree
- .
- ├── files
- │ ├── ldapwhoami
- │ └── serialportuserinit
- └── scripts.bb
-
- 1 directory, 3 files
FILESPATH目录未做修改了
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended/myscript$ cat scripts.bb
- SUMMARY = "examples"
- SECTION = "examples"
- LICENSE = "MIT"
- LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
- #${THISDIR}表示bb文件所在路径,即meta-byosoft/meta-4u-x201/recipes-mytest/scripts
- #FILESPATH := "${THISDIR}/../../sources/${PN}:"
-
- S = "${WORKDIR}"
-
- SRC_URI = "\
- file://ldapwhoami \
- file://serialportuserinit \
- "
- do_install() {
- install -m 0755 -d ${D}${sbindir}
- install -m 0755 ${S}/ldapwhoami ${D}${sbindir}
- install -m 0755 ${S}/serialportuserinit ${D}${sbindir}
- }
编译命令 bitbake scripts
tmp/work/cortexa53-crypto-poky-linux/scripts/1.0-r0/image/usr/sbin/
七、软件包打包到rootfs中
在对应conf中增加,先删除conf/layer.conf
- IMAGE_INSTALL_append += "hellomake"
- IMAGE_INSTALL_append += "hellocmake"
- IMAGE_INSTALL_append += "helloauto"
- IMAGE_INSTALL_append += "scripts"
八、新增geos压缩文件编译
由于系统中已经有geos bb文件,我们改成geosaa
- adv@adv:/work/code/sources/meta-imx/meta-sdk/recipes-extended/geosaa$ tree
- .
- ├── files
- │ └── geos-3.9.3.tar.bz2
- └── geosaa.bb
-
- 1 directory, 2 files
注意修改编译目录S
- #hellocmake.bb文件
- SUMMARY = "Simple geos_aa application"
- SECTION = "examples"
- LICENSE = "MIT"
- LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-
-
- SRC_URI = " \
- file://geos-3.9.3.tar.bz2 \
- "
-
- #继承cmake类
- inherit cmake
-
- #修改了编译目录
- S = "${WORKDIR}/geos-3.9.3"
-
- # FILES 表示这个软件包,需要打包进映像的文件是hellomake,但决定这个软件包是否参与打包,需要在其他地方配置
- #FILES_${PN} += " ${sbindir}/hellocmake "
bitbake geosaa后
- tmp/work/cortexa53-crypto-poky-linux/geosaa/1.0-r0/image/usr/
- ├── bin
- │ └── geos-config
- ├── include
- │ ├── geos
- │ │ ├── algorithm
- │ │ │ ├── Angle.h
- │ │ │ ├── Area.h
- │ │ │ ├── BoundaryNodeRule.h
- │ │ │ ├── CentralEndpointIntersector.h
- │ │ │ ├── Centroid.h
- │ │ │ ├── CGAlgorithmsDD.h
- │ │ │ ├── construct
- │ │ │ │ ├── LargestEmptyCircle.h
- │ │ │ │ └── MaximumInscribedCircle.h
- │ │ │ ├── ConvexHull.h
- │ │ │ ├── ConvexHull.inl
- │ │ │ ├── distance
- │ │ │ │ ├── DiscreteFrechetDistance.h
- │ │ │ │ ├── DiscreteHausdorffDistance.h
- │ │ │ │ ├── DistanceToPoint.h
- │ │ │ │ └── PointPairDistance.h
- │ │ │ ├── Distance.h
- │ │ │ ├── HCoordinate.h
- │ │ │ ├── InteriorPointArea.h
- │ │ │ ├── InteriorPointLine.h
- │ │ │ ├── InteriorPointPoint.h
- │ │ │ ├── Intersection.h
- │ │ │ ├── Length.h
- │ │ │ ├── LineIntersector.h
- │ │ │ ├── locate
- │ │ │ │ ├── IndexedPointInAreaLocator.h
- │ │ │ │ ├── PointOnGeometryLocator.h
- │ │ │ │ └── SimplePointInAreaLocator.h
- │ │ │ ├── MinimumBoundingCircle.h
- │ │ │ ├── MinimumDiameter.h
- │ │ │ ├── NotRepresentableException.h
- │ │ │ ├── Orientation.h
- │ │ │ ├── PointLocation.h
- │ │ │ ├── PointLocator.h
- │ │ │ ├── RayCrossingCounterDD.h
- │ │ │ ├── RayCrossingCounter.h
- │ │ │ └── RobustDeterminant.h
- │ │ ├── constants.h
- │ │ ├── edgegraph
- │ │ │ ├── EdgeGraphBuilder.h
- │ │ │ ├── EdgeGraph.h
- │ │ │ ├── HalfEdge.h
- │ │ │ └── MarkHalfEdge.h
- │ │ ├── export.h
- │ │ ├── geom
- │ │ │ ├── CoordinateArraySequenceFactory.h
- │ │ │ ├── CoordinateArraySequenceFactory.inl
- │ │ │ ├── CoordinateArraySequence.h
- │ │ │ ├── CoordinateFilter.h
- │ │ │ ├── Coordinate.h
- │ │ │ ├── Coordinate.inl
- │ │ │ ├── CoordinateList.h
- │ │ │ ├── CoordinateSequenceFactory.h
- │ │ │ ├── CoordinateSequenceFilter.h
- │ │ │ ├── CoordinateSequence.h
- │ │ │ ├── DefaultCoordinateSequenceFactory.h
- │ │ │ ├── Dimension.h
- │ │ │ ├── Envelope.h
- │ │ │ ├── Envelope.inl
- │ │ │ ├── FixedSizeCoordinateSequence.h
- │ │ │ ├── GeometryCollection.h
- │ │ │ ├── GeometryCollection.inl
- │ │ │ ├── GeometryComponentFilter.h
- │ │ │ ├── GeometryFactory.h
- │ │ │ ├── GeometryFactory.inl
- │ │ │ ├── GeometryFilter.h
- │ │ │ ├── Geometry.h
- │ │ │ ├── HeuristicOverlay.h
- │ │ │ ├── IntersectionMatrix.h
- │ │ │ ├── LinearRing.h
- │ │ │ ├── LineSegment.h
- │ │ │ ├── LineSegment.inl
- │ │ │ ├── LineString.h
- │ │ │ ├── Location.h
- │ │ │ ├── MultiLineString.h
- │ │ │ ├── MultiLineString.inl
- │ │ │ ├── MultiPoint.h
- │ │ │ ├── MultiPolygon.h
- │ │ │ ├── MultiPolygon.inl
- │ │ │ ├── Point.h
- │ │ │ ├── Polygon.h
- │ │ │ ├── Position.h
- │ │ │ ├── PrecisionModel.h
- │ │ │ ├── PrecisionModel.inl
- │ │ │ ├── prep
- │ │ │ │ ├── AbstractPreparedPolygonContains.h
- │ │ │ │ ├── BasicPreparedGeometry.h
- │ │ │ │ ├── PreparedGeometryFactory.h
- │ │ │ │ ├── PreparedGeometry.h
- │ │ │ │ ├── PreparedLineStringDistance.h
- │ │ │ │ ├── PreparedLineString.h
- │ │ │ │ ├── PreparedLineStringIntersects.h
- │ │ │ │ ├── PreparedLineStringNearestPoints.h
- │ │ │ │ ├── PreparedPoint.h
- │ │ │ │ ├── PreparedPolygonContains.h
- │ │ │ │ ├── PreparedPolygonContainsProperly.h
- │ │ │ │ ├── PreparedPolygonCovers.h
- │ │ │ │ ├── PreparedPolygonDistance.h
- │ │ │ │ ├── PreparedPolygon.h
- │ │ │ │ ├── PreparedPolygonIntersects.h
- │ │ │ │ └── PreparedPolygonPredicate.h
- │ │ │ ├── Quadrant.h
- │ │ │ ├── Quadrant.inl
- │ │ │ ├── Triangle.h
- │ │ │ └── util
- │ │ │ ├── ComponentCoordinateExtracter.h
- │ │ │ ├── CoordinateOperation.h
- │ │ │ ├── Densifier.h
- │ │ │ ├── GeometryCombiner.h
- │ │ │ ├── GeometryEditor.h
- │ │ │ ├── GeometryEditorOperation.h
- │ │ │ ├── GeometryExtracter.h
- │ │ │ ├── GeometryTransformer.h
- │ │ │ ├── LinearComponentExtracter.h
- │ │ │ ├── PointExtracter.h
- │ │ │ ├── PolygonExtracter.h
- │ │ │ ├── ShortCircuitedGeometryVisitor.h
- │ │ │ └── SineStarFactory.h
- │ │ ├── geomgraph
- │ │ │ ├── Depth.h
- │ │ │ ├── Depth.inl
- │ │ │ ├── DirectedEdge.h
- │ │ │ ├── DirectedEdge.inl
- │ │ │ ├── DirectedEdgeStar.h
- │ │ │ ├── EdgeEnd.h
- │ │ │ ├── EdgeEndStar.h
- │ │ │ ├── Edge.h
- │ │ │ ├── EdgeIntersection.h
- │ │ │ ├── EdgeIntersectionList.h
- │ │ │ ├── EdgeList.h
- │ │ │ ├── EdgeNodingValidator.h
- │ │ │ ├── EdgeRing.h
- │ │ │ ├── GeometryGraph.h
- │ │ │ ├── GeometryGraph.inl
- │ │ │ ├── GraphComponent.h
- │ │ │ ├── index
- │ │ │ │ ├── EdgeSetIntersector.h
- │ │ │ │ ├── MonotoneChainEdge.h
- │ │ │ │ ├── MonotoneChain.h
- │ │ │ │ ├── MonotoneChainIndexer.h
- │ │ │ │ ├── SegmentIntersector.h
- │ │ │ │ ├── SegmentIntersector.inl
- │ │ │ │ ├── SimpleEdgeSetIntersector.h
- │ │ │ │ ├── SimpleMCSweepLineIntersector.h
- │ │ │ │ ├── SimpleSweepLineIntersector.h
- │ │ │ │ ├── SweepLineEvent.h
- │ │ │ │ ├── SweepLineEventObj.h
- │ │ │ │ └── SweepLineSegment.h
- │ │ │ ├── Label.h
- │ │ │ ├── Label.inl
- │ │ │ ├── NodeFactory.h
- │ │ │ ├── Node.h
- │ │ │ ├── NodeMap.h
- │ │ │ ├── PlanarGraph.h
- │ │ │ ├── TopologyLocation.h
- │ │ │ └── TopologyLocation.inl
- │ │ ├── geom.h
- │ │ ├── index
- │ │ │ ├── bintree
- │ │ │ │ ├── Bintree.h
- │ │ │ │ ├── Interval.h
- │ │ │ │ ├── Key.h
- │ │ │ │ ├── NodeBase.h
- │ │ │ │ ├── Node.h
- │ │ │ │ └── Root.h
- │ │ │ ├── chain
- │ │ │ │ ├── MonotoneChainBuilder.h
- │ │ │ │ ├── MonotoneChain.h
- │ │ │ │ ├── MonotoneChainOverlapAction.h
- │ │ │ │ └── MonotoneChainSelectAction.h
- │ │ │ ├── intervalrtree
- │ │ │ │ ├── IntervalRTreeBranchNode.h
- │ │ │ │ ├── IntervalRTreeLeafNode.h
- │ │ │ │ ├── IntervalRTreeNode.h
- │ │ │ │ └── SortedPackedIntervalRTree.h
- │ │ │ ├── ItemVisitor.h
- │ │ │ ├── kdtree
- │ │ │ │ ├── KdNode.h
- │ │ │ │ ├── KdNodeVisitor.h
- │ │ │ │ └── KdTree.h
- │ │ │ ├── quadtree
- │ │ │ │ ├── IntervalSize.h
- │ │ │ │ ├── Key.h
- │ │ │ │ ├── NodeBase.h
- │ │ │ │ ├── Node.h
- │ │ │ │ ├── Quadtree.h
- │ │ │ │ └── Root.h
- │ │ │ ├── SpatialIndex.h
- │ │ │ ├── strtree
- │ │ │ │ ├── AbstractNode.h
- │ │ │ │ ├── AbstractSTRtree.h
- │ │ │ │ ├── Boundable.h
- │ │ │ │ ├── BoundablePair.h
- │ │ │ │ ├── EnvelopeUtil.h
- │ │ │ │ ├── GeometryItemDistance.h
- │ │ │ │ ├── Interval.h
- │ │ │ │ ├── ItemBoundable.h
- │ │ │ │ ├── ItemDistance.h
- │ │ │ │ ├── SimpleSTRdistance.h
- │ │ │ │ ├── SimpleSTRnode.h
- │ │ │ │ ├── SimpleSTRtree.h
- │ │ │ │ ├── SIRtree.h
- │ │ │ │ └── STRtree.h
- │ │ │ └── sweepline
- │ │ │ ├── SweepLineEvent.h
- │ │ │ ├── SweepLineIndex.h
- │ │ │ ├── SweepLineInterval.h
- │ │ │ └── SweepLineOverlapAction.h
- │ │ ├── inline.h
- │ │ ├── io
- │ │ │ ├── ByteOrderDataInStream.h
- │ │ │ ├── ByteOrderDataInStream.inl
- │ │ │ ├── ByteOrderValues.h
- │ │ │ ├── CLocalizer.h
- │ │ │ ├── ParseException.h
- │ │ │ ├── StringTokenizer.h
- │ │ │ ├── WKBConstants.h
- │ │ │ ├── WKBReader.h
- │ │ │ ├── WKBWriter.h
- │ │ │ ├── WKTReader.h
- │ │ │ ├── WKTReader.inl
- │ │ │ ├── WKTWriter.h
- │ │ │ └── Writer.h
- │ │ ├── linearref
- │ │ │ ├── ExtractLineByLocation.h
- │ │ │ ├── LengthIndexedLine.h
- │ │ │ ├── LengthIndexOfPoint.h
- │ │ │ ├── LengthLocationMap.h
- │ │ │ ├── LinearGeometryBuilder.h
- │ │ │ ├── LinearIterator.h
- │ │ │ ├── LinearLocation.h
- │ │ │ ├── LocationIndexedLine.h
- │ │ │ ├── LocationIndexOfLine.h
- │ │ │ └── LocationIndexOfPoint.h
- │ │ ├── math
- │ │ │ └── DD.h
- │ │ ├── namespaces.h
- │ │ ├── noding
- │ │ │ ├── BasicSegmentString.h
- │ │ │ ├── BasicSegmentString.inl
- │ │ │ ├── FastNodingValidator.h
- │ │ │ ├── FastSegmentSetIntersectionFinder.h
- │ │ │ ├── GeometryNoder.h
- │ │ │ ├── IntersectionAdder.h
- │ │ │ ├── IntersectionFinderAdder.h
- │ │ │ ├── IteratedNoder.h
- │ │ │ ├── MCIndexNoder.h
- │ │ │ ├── MCIndexNoder.inl
- │ │ │ ├── MCIndexSegmentSetMutualIntersector.h
- │ │ │ ├── NodableSegmentString.h
- │ │ │ ├── NodedSegmentString.h
- │ │ │ ├── Noder.h
- │ │ │ ├── NodingIntersectionFinder.h
- │ │ │ ├── NodingValidator.h
- │ │ │ ├── Octant.h
- │ │ │ ├── OrientedCoordinateArray.h
- │ │ │ ├── ScaledNoder.h
- │ │ │ ├── SegmentIntersectionDetector.h
- │ │ │ ├── SegmentIntersector.h
- │ │ │ ├── SegmentNode.h
- │ │ │ ├── SegmentNodeList.h
- │ │ │ ├── SegmentPointComparator.h
- │ │ │ ├── SegmentSetMutualIntersector.h
- │ │ │ ├── SegmentString.h
- │ │ │ ├── SegmentStringUtil.h
- │ │ │ ├── SimpleNoder.h
- │ │ │ ├── SinglePassNoder.h
- │ │ │ ├── snap
- │ │ │ │ ├── SnappingIntersectionAdder.h
- │ │ │ │ ├── SnappingNoder.h
- │ │ │ │ └── SnappingPointIndex.h
- │ │ │ ├── snapround
- │ │ │ │ ├── HotPixel.h
- │ │ │ │ ├── HotPixelIndex.h
- │ │ │ │ ├── HotPixel.inl
- │ │ │ │ ├── MCIndexPointSnapper.h
- │ │ │ │ ├── MCIndexSnapRounder.h
- │ │ │ │ ├── SnapRoundingIntersectionAdder.h
- │ │ │ │ └── SnapRoundingNoder.h
- │ │ │ └── ValidatingNoder.h
- │ │ ├── operation
- │ │ │ ├── buffer
- │ │ │ │ ├── BufferBuilder.h
- │ │ │ │ ├── BufferInputLineSimplifier.h
- │ │ │ │ ├── BufferOp.h
- │ │ │ │ ├── BufferParameters.h
- │ │ │ │ ├── BufferSubgraph.h
- │ │ │ │ ├── OffsetCurveBuilder.h
- │ │ │ │ ├── OffsetCurveSetBuilder.h
- │ │ │ │ ├── OffsetSegmentGenerator.h
- │ │ │ │ ├── OffsetSegmentString.h
- │ │ │ │ ├── RightmostEdgeFinder.h
- │ │ │ │ └── SubgraphDepthLocater.h
- │ │ │ ├── distance
- │ │ │ │ ├── ConnectedElementLocationFilter.h
- │ │ │ │ ├── ConnectedElementPointFilter.h
- │ │ │ │ ├── DistanceOp.h
- │ │ │ │ ├── FacetSequence.h
- │ │ │ │ ├── FacetSequenceTreeBuilder.h
- │ │ │ │ ├── GeometryLocation.h
- │ │ │ │ └── IndexedFacetDistance.h
- │ │ │ ├── GeometryGraphOperation.h
- │ │ │ ├── intersection
- │ │ │ │ ├── Rectangle.h
- │ │ │ │ ├── RectangleIntersectionBuilder.h
- │ │ │ │ └── RectangleIntersection.h
- │ │ │ ├── IsSimpleOp.h
- │ │ │ ├── linemerge
- │ │ │ │ ├── EdgeString.h
- │ │ │ │ ├── LineMergeDirectedEdge.h
- │ │ │ │ ├── LineMergeEdge.h
- │ │ │ │ ├── LineMergeGraph.h
- │ │ │ │ ├── LineMerger.h
- │ │ │ │ └── LineSequencer.h
- │ │ │ ├── overlay
- │ │ │ │ ├── EdgeSetNoder.h
- │ │ │ │ ├── ElevationMatrixCell.h
- │ │ │ │ ├── ElevationMatrix.h
- │ │ │ │ ├── LineBuilder.h
- │ │ │ │ ├── MaximalEdgeRing.h
- │ │ │ │ ├── MinimalEdgeRing.h
- │ │ │ │ ├── MinimalEdgeRing.inl
- │ │ │ │ ├── OverlayNodeFactory.h
- │ │ │ │ ├── OverlayOp.h
- │ │ │ │ ├── PointBuilder.h
- │ │ │ │ ├── PolygonBuilder.h
- │ │ │ │ ├── snap
- │ │ │ │ │ ├── GeometrySnapper.h
- │ │ │ │ │ ├── LineStringSnapper.h
- │ │ │ │ │ ├── SnapIfNeededOverlayOp.h
- │ │ │ │ │ └── SnapOverlayOp.h
- │ │ │ │ └── validate
- │ │ │ │ ├── FuzzyPointLocator.h
- │ │ │ │ ├── OffsetPointGenerator.h
- │ │ │ │ └── OverlayResultValidator.h
- │ │ │ ├── overlayng
- │ │ │ │ ├── Edge.h
- │ │ │ │ ├── EdgeKey.h
- │ │ │ │ ├── EdgeMerger.h
- │ │ │ │ ├── EdgeNodingBuilder.h
- │ │ │ │ ├── EdgeSourceInfo.h
- │ │ │ │ ├── ElevationModel.h
- │ │ │ │ ├── IndexedPointOnLineLocator.h
- │ │ │ │ ├── InputGeometry.h
- │ │ │ │ ├── IntersectionPointBuilder.h
- │ │ │ │ ├── LineBuilder.h
- │ │ │ │ ├── LineLimiter.h
- │ │ │ │ ├── MaximalEdgeRing.h
- │ │ │ │ ├── OverlayEdge.h
- │ │ │ │ ├── OverlayEdgeRing.h
- │ │ │ │ ├── OverlayGraph.h
- │ │ │ │ ├── OverlayLabel.h
- │ │ │ │ ├── OverlayLabeller.h
- │ │ │ │ ├── OverlayMixedPoints.h
- │ │ │ │ ├── OverlayNG.h
- │ │ │ │ ├── OverlayNGRobust.h
- │ │ │ │ ├── OverlayPoints.h
- │ │ │ │ ├── OverlayUtil.h
- │ │ │ │ ├── PolygonBuilder.h
- │ │ │ │ ├── PrecisionReducer.h
- │ │ │ │ ├── PrecisionUtil.h
- │ │ │ │ ├── RingClipper.h
- │ │ │ │ ├── RobustClipEnvelopeComputer.h
- │ │ │ │ └── UnaryUnionNG.h
- │ │ │ ├── polygonize
- │ │ │ │ ├── BuildArea.h
- │ │ │ │ ├── EdgeRing.h
- │ │ │ │ ├── HoleAssigner.h
- │ │ │ │ ├── PolygonizeDirectedEdge.h
- │ │ │ │ ├── PolygonizeEdge.h
- │ │ │ │ ├── PolygonizeGraph.h
- │ │ │ │ └── Polygonizer.h
- │ │ │ ├── predicate
- │ │ │ │ ├── RectangleContains.h
- │ │ │ │ ├── RectangleIntersects.h
- │ │ │ │ └── SegmentIntersectionTester.h
- │ │ │ ├── relate
- │ │ │ │ ├── EdgeEndBuilder.h
- │ │ │ │ ├── EdgeEndBundle.h
- │ │ │ │ ├── EdgeEndBundleStar.h
- │ │ │ │ ├── RelateComputer.h
- │ │ │ │ ├── RelateNodeFactory.h
- │ │ │ │ ├── RelateNodeGraph.h
- │ │ │ │ ├── RelateNode.h
- │ │ │ │ └── RelateOp.h
- │ │ │ ├── sharedpaths
- │ │ │ │ └── SharedPathsOp.h
- │ │ │ ├── union
- │ │ │ │ ├── CascadedPolygonUnion.h
- │ │ │ │ ├── CascadedUnion.h
- │ │ │ │ ├── CoverageUnion.h
- │ │ │ │ ├── GeometryListHolder.h
- │ │ │ │ ├── OverlapUnion.h
- │ │ │ │ ├── PointGeometryUnion.h
- │ │ │ │ ├── UnaryUnionOp.h
- │ │ │ │ └── UnionStrategy.h
- │ │ │ └── valid
- │ │ │ ├── ConnectedInteriorTester.h
- │ │ │ ├── ConsistentAreaTester.h
- │ │ │ ├── IndexedNestedShellTester.h
- │ │ │ ├── IsValidOp.h
- │ │ │ ├── MakeValid.h
- │ │ │ ├── QuadtreeNestedRingTester.h
- │ │ │ ├── RepeatedPointRemover.h
- │ │ │ ├── RepeatedPointTester.h
- │ │ │ ├── SimpleNestedRingTester.h
- │ │ │ ├── SweeplineNestedRingTester.h
- │ │ │ └── TopologyValidationError.h
- │ │ ├── planargraph
- │ │ │ ├── algorithm
- │ │ │ │ └── ConnectedSubgraphFinder.h
- │ │ │ ├── DirectedEdge.h
- │ │ │ ├── DirectedEdgeStar.h
- │ │ │ ├── Edge.h
- │ │ │ ├── GraphComponent.h
- │ │ │ ├── Node.h
- │ │ │ ├── NodeMap.h
- │ │ │ ├── PlanarGraph.h
- │ │ │ └── Subgraph.h
- │ │ ├── precision
- │ │ │ ├── CommonBits.h
- │ │ │ ├── CommonBitsOp.h
- │ │ │ ├── CommonBitsRemover.h
- │ │ │ ├── EnhancedPrecisionOp.h
- │ │ │ ├── GeometryPrecisionReducer.h
- │ │ │ ├── MinimumClearance.h
- │ │ │ ├── PrecisionReducerCoordinateOperation.h
- │ │ │ └── SimpleGeometryPrecisionReducer.h
- │ │ ├── profiler.h
- │ │ ├── shape
- │ │ │ └── fractal
- │ │ │ ├── HilbertCode.h
- │ │ │ ├── HilbertEncoder.h
- │ │ │ └── MortonCode.h
- │ │ ├── simplify
- │ │ │ ├── DouglasPeuckerLineSimplifier.h
- │ │ │ ├── DouglasPeuckerSimplifier.h
- │ │ │ ├── LineSegmentIndex.h
- │ │ │ ├── TaggedLineSegment.h
- │ │ │ ├── TaggedLinesSimplifier.h
- │ │ │ ├── TaggedLineString.h
- │ │ │ ├── TaggedLineStringSimplifier.h
- │ │ │ └── TopologyPreservingSimplifier.h
- │ │ ├── triangulate
- │ │ │ ├── DelaunayTriangulationBuilder.h
- │ │ │ ├── IncrementalDelaunayTriangulator.h
- │ │ │ ├── quadedge
- │ │ │ │ ├── LastFoundQuadEdgeLocator.h
- │ │ │ │ ├── LocateFailureException.h
- │ │ │ │ ├── QuadEdge.h
- │ │ │ │ ├── QuadEdgeLocator.h
- │ │ │ │ ├── QuadEdgeQuartet.h
- │ │ │ │ ├── QuadEdgeSubdivision.h
- │ │ │ │ ├── TrianglePredicate.h
- │ │ │ │ ├── TriangleVisitor.h
- │ │ │ │ └── Vertex.h
- │ │ │ └── VoronoiDiagramBuilder.h
- │ │ ├── unload.h
- │ │ ├── util
- │ │ │ ├── Assert.h
- │ │ │ ├── AssertionFailedException.h
- │ │ │ ├── CoordinateArrayFilter.h
- │ │ │ ├── GeometricShapeFactory.h
- │ │ │ ├── GEOSException.h
- │ │ │ ├── IllegalArgumentException.h
- │ │ │ ├── IllegalStateException.h
- │ │ │ ├── Interrupt.h
- │ │ │ ├── Machine.h
- │ │ │ ├── math.h
- │ │ │ ├── TopologyException.h
- │ │ │ ├── UniqueCoordinateArrayFilter.h
- │ │ │ └── UnsupportedOperationException.h
- │ │ ├── util.h
- │ │ └── version.h
- │ └── geos_c.h
- └── lib
- ├── cmake
- │ └── GEOS
- │ ├── geos-config.cmake
- │ ├── geos-config-version.cmake
- │ ├── geos-targets.cmake
- │ └── geos-targets-release.cmake
- ├── libgeos_c.so -> libgeos_c.so.1
- ├── libgeos_c.so.1 -> libgeos_c.so.1.14.3
- ├── libgeos_c.so.1.14.3
- ├── libgeos.so -> libgeos.so.3.9.3
- ├── libgeos.so.3.9.3
- └── pkgconfig
- └── geos.pc
-
- 55 directories, 439 files