From be0c1e0f158d773642043df0dcea524dc6a81056 Mon Sep 17 00:00:00 2001 From: yony Date: Wed, 5 Jun 2024 21:04:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=A2=E5=90=91=E5=85=A8=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 13 +- WireRouting_DLL.sln | 31 ----- lib/CMakeLists.txt | 23 ++++ lib/Debug/WireRouting.exp | Bin 0 -> 65483 bytes lib/Debug/WireRouting.lib | Bin 0 -> 105996 bytes lib/WireRouting_DLL.vcxproj | 194 ---------------------------- lib/WireRouting_DLL.vcxproj.filters | 129 ------------------ lib/WireRouting_DLL.vcxproj.user | 4 - lib/dllmain.cpp | 17 --- lib/include/framework.h | 5 - lib/include/pch.h | 13 -- lib/pch.cpp | 5 - lib/{ => src}/Astar.cpp | 1 - lib/{ => src}/BVH.cpp | 2 +- lib/{ => src}/BasicChannel.cpp | 2 +- lib/{ => src}/BasicEdge.cpp | 2 +- lib/{ => src}/BranchPoint.cpp | 2 +- lib/{ => src}/BranchTree.cpp | 2 +- lib/{ => src}/Bundle.cpp | 2 +- lib/{ => src}/Clip.cpp | 2 +- lib/{ => src}/Connector.cpp | 2 +- lib/{ => src}/Const.cpp | 1 - lib/{ => src}/Geometry.cpp | 2 +- lib/{ => src}/Intersection.cpp | 2 +- lib/{ => src}/KDtree.cpp | 2 +- lib/{ => src}/Path.cpp | 2 +- lib/{ => src}/Point.cpp | 2 +- lib/{ => src}/ReadXML.cpp | 2 +- readme.md | 76 +++++++++++ 29 files changed, 121 insertions(+), 419 deletions(-) delete mode 100644 WireRouting_DLL.sln create mode 100644 lib/CMakeLists.txt create mode 100644 lib/Debug/WireRouting.exp create mode 100644 lib/Debug/WireRouting.lib delete mode 100644 lib/WireRouting_DLL.vcxproj delete mode 100644 lib/WireRouting_DLL.vcxproj.filters delete mode 100644 lib/WireRouting_DLL.vcxproj.user delete mode 100644 lib/dllmain.cpp delete mode 100644 lib/include/framework.h delete mode 100644 lib/include/pch.h delete mode 100644 lib/pch.cpp rename lib/{ => src}/Astar.cpp (99%) rename lib/{ => src}/BVH.cpp (98%) rename lib/{ => src}/BasicChannel.cpp (99%) rename lib/{ => src}/BasicEdge.cpp (99%) rename lib/{ => src}/BranchPoint.cpp (98%) rename lib/{ => src}/BranchTree.cpp (98%) rename lib/{ => src}/Bundle.cpp (98%) rename lib/{ => src}/Clip.cpp (98%) rename lib/{ => src}/Connector.cpp (64%) rename lib/{ => src}/Const.cpp (72%) rename lib/{ => src}/Geometry.cpp (91%) rename lib/{ => src}/Intersection.cpp (98%) rename lib/{ => src}/KDtree.cpp (98%) rename lib/{ => src}/Path.cpp (96%) rename lib/{ => src}/Point.cpp (95%) rename lib/{ => src}/ReadXML.cpp (99%) create mode 100644 readme.md diff --git a/CMakeLists.txt b/CMakeLists.txt index a1d9083..6f878c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.16) #------------REQUIRED_2 指定项目名及项目版本------------# project( - WireRouting # 项目名称没有什么特别的用处。这里没有添加任何的目标(target) + WireRoutingProject # 项目名称没有什么特别的用处。这里没有添加任何的目标(target) VERSION 1.0 DESCRIPTION "A project for wire routing" # CMake 3.9+ 特性 # 语言可以是 C,CXX,Fortran,ASM,CUDA(CMake 3.8+),CSharp(3.8+),SWIFT(CMake 3.15+ experimental) @@ -42,6 +42,7 @@ elseif (WIN32) list(PREPEND CMAKE_PREFIX_PATH D:/SOURCE/Dependencies) # Windows set(CMAKE_TOOLCHAIN_FILE "D:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake") # vcpkg include(${CMAKE_TOOLCHAIN_FILE}) + # 指定 CONFIG 模式,查看 /share//cmake/xxxConfig.cmake 文件名决定查找包名 find_package(tinyxml CONFIG REQUIRED) elseif (UNIX) list(PREPEND CMAKE_PREFIX_PATH /home/yony/PROJECTS/Dependencies) # Linux @@ -50,8 +51,6 @@ endif() # 输出 find_package 系统路径和当前指定路径 message(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}") message(STATUS "Self added CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}") -# 指定 CONFIG 模式,查看 /share//cmake/xxxConfig.cmake 文件名决定查找包名 -# find_package(tinyxml CONFIG REQUIRED) #------------REQUIRED_5.1.2 include 执行.cmake中的ContentFetch模块来引入库------------# # 添加cmake目录到CMAKE_MODULE_PATH,以供 include 方法使用 @@ -63,8 +62,12 @@ message(STATUS "Self added CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") # igl_include(core) # igl_include(core) 默认包含igl::core,此行可注释 # igl_include(glfw) # igl_include_optional(glfw) Enable the target igl::glfw + +add_subdirectory(lib) # 添加子目录,子目录中的CMakeLists.txt将会被执行 + + # 复制DLL文件到可执行文件目录 -file(COPY ${CMAKE_SOURCE_DIR}/lib/VSbuild/x64/Debug/WireRouting_DLL.dll DESTINATION ${PROJECT_BINARY_DIR}/Debug) +# file(COPY ${CMAKE_SOURCE_DIR}/lib/Debug/WireRouting.dll DESTINATION ${PROJECT_BINARY_DIR}/Debug) #------------REQUIRED_3 添加可执行文件------------# @@ -86,7 +89,7 @@ if (WIN32) target_link_libraries( ${PROJECT_NAME} PUBLIC unofficial-tinyxml::unofficial-tinyxml - ${CMAKE_SOURCE_DIR}/lib/VSbuild/x64/Debug/WireRouting_DLL.lib + ${CMAKE_SOURCE_DIR}/lib/Debug/WireRouting.lib ) else() target_link_libraries( diff --git a/WireRouting_DLL.sln b/WireRouting_DLL.sln deleted file mode 100644 index 0cb5948..0000000 --- a/WireRouting_DLL.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.34322.80 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WireRouting_DLL", "lib\WireRouting_DLL.vcxproj", "{958F9989-0884-4B91-836A-BCDA97342FCB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {958F9989-0884-4B91-836A-BCDA97342FCB}.Debug|x64.ActiveCfg = Debug|x64 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Debug|x64.Build.0 = Debug|x64 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Debug|x86.ActiveCfg = Debug|Win32 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Debug|x86.Build.0 = Debug|Win32 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Release|x64.ActiveCfg = Release|x64 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Release|x64.Build.0 = Release|x64 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Release|x86.ActiveCfg = Release|Win32 - {958F9989-0884-4B91-836A-BCDA97342FCB}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9AC3C08A-4DBA-4FF9-8DE7-ACE6B546D11B} - EndGlobalSection -EndGlobal diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..2256370 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,23 @@ +aux_source_directory(${CMAKE_SOURCE_DIR}/lib/src SRC_FILES_IN_LIB) +message(STATUS "SRC_FILES_IN_LIB: ${SRC_FILES_IN_LIB}") + +add_library(WireRouting SHARED ${SRC_FILES_IN_LIB}) +target_compile_definitions(WireRouting PUBLIC DMY_LIB_SHARED_BUILD) +target_compile_definitions(WireRouting PRIVATE WIREROUTINGDLL_EXPORTS) + +INSTALL(TARGETS WireRouting DESTINATION ${CMAKE_SOURCE_DIR}/lib) + +SET_TARGET_PROPERTIES( + WireRouting PROPERTIES + LINKER_LANGUAGE C + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib + OUTPUT_NAME "WireRouting" + PREFIX "" +) + +target_include_directories( + WireRouting PUBLIC + ${CMAKE_SOURCE_DIR}/lib/include +) diff --git a/lib/Debug/WireRouting.exp b/lib/Debug/WireRouting.exp new file mode 100644 index 0000000000000000000000000000000000000000..1d99ec136f53659a7761b29fb101e7e53dda3883 GIT binary patch literal 65483 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 literal 0 HcmV?d00001 diff --git a/lib/Debug/WireRouting.lib b/lib/Debug/WireRouting.lib new file mode 100644 index 0000000000000000000000000000000000000000..a7453ae97a9c49d394b1827ffcb4bb8fc86affd7 GIT binary patch literal 105996 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 - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {958f9989-0884-4b91-836a-bcda97342fcb} - WireRoutingDLL - 10.0 - - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - $(SolutionDir)lib\VSbuild\$(Platform)\$(Configuration)\ - $(SolutionDir)lib\VSbuild\$(Platform)\$(Configuration)\ - $(SolutionDir)lib\include;$(IncludePath) - - - - Level3 - true - WIN32;_DEBUG;WIREROUTINGDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - false - - - - - Level3 - true - true - true - WIN32;NDEBUG;WIREROUTINGDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - true - true - false - - - - - Level3 - true - _DEBUG;WIREROUTINGDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - false - - - - - Level3 - true - true - true - NDEBUG;WIREROUTINGDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - true - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - - - \ No newline at end of file diff --git a/lib/WireRouting_DLL.vcxproj.filters b/lib/WireRouting_DLL.vcxproj.filters deleted file mode 100644 index 3f31ef7..0000000 --- a/lib/WireRouting_DLL.vcxproj.filters +++ /dev/null @@ -1,129 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - 源文件 - - - \ No newline at end of file diff --git a/lib/WireRouting_DLL.vcxproj.user b/lib/WireRouting_DLL.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/lib/WireRouting_DLL.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/lib/dllmain.cpp b/lib/dllmain.cpp deleted file mode 100644 index 5aada3d..0000000 --- a/lib/dllmain.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// dllmain.cpp : 定义 DLL 应用程序的入口点。 -#include "pch.h" - -BOOL APIENTRY DllMain(HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} diff --git a/lib/include/framework.h b/lib/include/framework.h deleted file mode 100644 index a71fbd2..0000000 --- a/lib/include/framework.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 -// Windows 头文件 -#include diff --git a/lib/include/pch.h b/lib/include/pch.h deleted file mode 100644 index f4bf08f..0000000 --- a/lib/include/pch.h +++ /dev/null @@ -1,13 +0,0 @@ -// pch.h: 这是预编译标头文件。 -// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 -// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 -// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 -// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 - -#ifndef PCH_H -#define PCH_H - -// 添加要在此处预编译的标头 -#include "framework.h" - -#endif // PCH_H diff --git a/lib/pch.cpp b/lib/pch.cpp deleted file mode 100644 index 10b8eaa..0000000 --- a/lib/pch.cpp +++ /dev/null @@ -1,5 +0,0 @@ -// pch.cpp: 与预编译标头对应的源文件 - -#include "pch.h" - -// 当使用预编译的头时,需要使用此源文件,编译才能成功。 diff --git a/lib/Astar.cpp b/lib/src/Astar.cpp similarity index 99% rename from lib/Astar.cpp rename to lib/src/Astar.cpp index 52d4d30..715c9f7 100644 --- a/lib/Astar.cpp +++ b/lib/src/Astar.cpp @@ -1,4 +1,3 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier #include "Astar.h" Astar astar; diff --git a/lib/BVH.cpp b/lib/src/BVH.cpp similarity index 98% rename from lib/BVH.cpp rename to lib/src/BVH.cpp index 2179234..f4649c6 100644 --- a/lib/BVH.cpp +++ b/lib/src/BVH.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "BVH.h" BVH bvh; diff --git a/lib/BasicChannel.cpp b/lib/src/BasicChannel.cpp similarity index 99% rename from lib/BasicChannel.cpp rename to lib/src/BasicChannel.cpp index 2bf2f9b..9e552e8 100644 --- a/lib/BasicChannel.cpp +++ b/lib/src/BasicChannel.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "BasicChannel.h" BasicChannel basicChannel; diff --git a/lib/BasicEdge.cpp b/lib/src/BasicEdge.cpp similarity index 99% rename from lib/BasicEdge.cpp rename to lib/src/BasicEdge.cpp index b5068b0..bb936ce 100644 --- a/lib/BasicEdge.cpp +++ b/lib/src/BasicEdge.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "BasicEdge.h" BasicEdge basicEdge; diff --git a/lib/BranchPoint.cpp b/lib/src/BranchPoint.cpp similarity index 98% rename from lib/BranchPoint.cpp rename to lib/src/BranchPoint.cpp index afd362e..1f684f6 100644 --- a/lib/BranchPoint.cpp +++ b/lib/src/BranchPoint.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "BranchPoint.h" BranchPointSet branchPointSet; diff --git a/lib/BranchTree.cpp b/lib/src/BranchTree.cpp similarity index 98% rename from lib/BranchTree.cpp rename to lib/src/BranchTree.cpp index d7080cc..0146449 100644 --- a/lib/BranchTree.cpp +++ b/lib/src/BranchTree.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "BranchTree.h" BranchTree branchTree; diff --git a/lib/Bundle.cpp b/lib/src/Bundle.cpp similarity index 98% rename from lib/Bundle.cpp rename to lib/src/Bundle.cpp index 902388b..6e83bc2 100644 --- a/lib/Bundle.cpp +++ b/lib/src/Bundle.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Bundle.h" BundleNode bdNode[MAXPointNum]; diff --git a/lib/Clip.cpp b/lib/src/Clip.cpp similarity index 98% rename from lib/Clip.cpp rename to lib/src/Clip.cpp index e714f46..38840e5 100644 --- a/lib/Clip.cpp +++ b/lib/src/Clip.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Clip.h" ClipSet clipSet; diff --git a/lib/Connector.cpp b/lib/src/Connector.cpp similarity index 64% rename from lib/Connector.cpp rename to lib/src/Connector.cpp index 7f793ea..a5f939d 100644 --- a/lib/Connector.cpp +++ b/lib/src/Connector.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Connector.h" Connector connectors[M]; diff --git a/lib/Const.cpp b/lib/src/Const.cpp similarity index 72% rename from lib/Const.cpp rename to lib/src/Const.cpp index 896917b..68d7a52 100644 --- a/lib/Const.cpp +++ b/lib/src/Const.cpp @@ -1,4 +1,3 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier #include "Const.h" double MAXX = -1e9, MINX = 1e9, MAXY = -1e9, MINY = 1e9, MAXZ = -1e9, MINZ = 1e9; // 卡箍的坐标范围 diff --git a/lib/Geometry.cpp b/lib/src/Geometry.cpp similarity index 91% rename from lib/Geometry.cpp rename to lib/src/Geometry.cpp index 285ca67..bd7c6c8 100644 --- a/lib/Geometry.cpp +++ b/lib/src/Geometry.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Geometry.h" vector vertices; diff --git a/lib/Intersection.cpp b/lib/src/Intersection.cpp similarity index 98% rename from lib/Intersection.cpp rename to lib/src/Intersection.cpp index 77f3fd2..3a3f443 100644 --- a/lib/Intersection.cpp +++ b/lib/src/Intersection.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Intersection.h" TriangleSegmentIntersectRes::TriangleSegmentIntersectRes(bool h, float tt) : hit(h), t(tt) {} // VS2008 diff --git a/lib/KDtree.cpp b/lib/src/KDtree.cpp similarity index 98% rename from lib/KDtree.cpp rename to lib/src/KDtree.cpp index 0560cca..a5f390e 100644 --- a/lib/KDtree.cpp +++ b/lib/src/KDtree.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "KDtree.h" KDtree kdtree; diff --git a/lib/Path.cpp b/lib/src/Path.cpp similarity index 96% rename from lib/Path.cpp rename to lib/src/Path.cpp index b07978d..1dddfbf 100644 --- a/lib/Path.cpp +++ b/lib/src/Path.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Path.h" diff --git a/lib/Point.cpp b/lib/src/Point.cpp similarity index 95% rename from lib/Point.cpp rename to lib/src/Point.cpp index 0607a3d..c9b2a94 100644 --- a/lib/Point.cpp +++ b/lib/src/Point.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "Point.h" const double eps = 1e-6; diff --git a/lib/ReadXML.cpp b/lib/src/ReadXML.cpp similarity index 99% rename from lib/ReadXML.cpp rename to lib/src/ReadXML.cpp index 46c2394..8b17596 100644 --- a/lib/ReadXML.cpp +++ b/lib/src/ReadXML.cpp @@ -1,4 +1,4 @@ -#include "pch.h" // use stdafx.h in Visual Studio 2017 and earlier + #include "ReadXML.h" string ini = "--"; diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..f378d86 --- /dev/null +++ b/readme.md @@ -0,0 +1,76 @@ +## 项目结构 + +``` +. +│ CMakeLists.txt \\CMake构建配置文件 +│ config.h.in +│ readme.md +├─data +│ ├─demo +│ │ └─ ... +│ └─Tinyroute_test +│ │ connector.csv \\连接器数据 +│ │ result_ALL.txt \\当前数据与参数下应运行出的结果数据 +│ ├─clip2 +│ │ clips_with_dir.xml \\空间中卡箍点集数据 +│ ├─OBJ +│ │ cangti_correct.obj \\输入模型 +│ └─wirexml \\ 连接器间连接关系 +│ 1START_END.xml +│ 2NEAR_END.xml +│ 3NEAR_START.xml +├─include +│ read_xml.h +│ +├─lib \\所用运行库 +│ │ tinyxml.lib +│ │ WireRouting_DLL.dll +│ │ WireRouting_DLL.lib +│ │ +│ └─include \\库相关头文件 +│ Astar.h +│ BasicChannel.h +│ BasicEdge.h +| ... +│ +└─src \\编译目标源文件 + xmlsql.cpp +``` + + + +## 运行环境配置 + +- CMake配置 + - 确认Cmake已安装: [Download CMake](https://cmake.org/download/#latest) + - 添加**cmake.exe**至环境变量 +- 确认编译器已安装,如VS2022、VS2019等环境 + +## 使用CMake构建项目 + +``` +# 进入项目目录 +cd + +# Standard CMake build +# 注意项目所用链接库均为 Debug x64 编译,构建务必使用同规格 +cmake -S . -B build -T host=x64 -A x64 +cmake --build build --config Debug --target ALL_BUILD -j 14 + +``` + +## 运行 + +``` +# 进入可执行文件所在目录 +cd \build\Debug + +# 运行 +.\WireRouting.exe createTinyroute "..\\..\\data\\Tinyroute_test\\clip2" "..\\..\\data\\Tinyroute_test\\wirexml" "..\\..\\data\\Tinyroute_test\\connector.csv" "..\\..\\data\\Tinyroute_test\\OBJ" output +``` + +## 查看结果 + +> 在 **\build\Debug\output_ALL.txt** 目录下查看输出文件 +> +> 可与 **\data\Tinyroute_test\result_ALL.txt** 比较结果 \ No newline at end of file