# CodeCraft **Repository Path**: wuhanstudio/CodeCraft ## Basic Information - **Project Name**: CodeCraft - **Description**: 华为 CrodeCraft 2016 软件精英挑战赛 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-03-30 - **Last Updated**: 2022-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 看到中文readme是一件非常亲切的事情!仔细看完此文档即可完成第一个用例: 1、整体指引: 1)使用一键式脚本编译、链接并打包压缩,如果编译失败请自行解决编译问题; 2)如果编译成功会在bin路径下生成可执行二进制文件"future_net"; 3)使用如下格式调用并调试程序"./future_net /xxx/topo.csv /xxx/demand.csv /xxx/result.csv",其中topo.csv和demand.csv是输入文件,result.csv是输出文件; 4)调试成功后到竞赛官网提交SDK-gcc路径下的压缩包"future_net.tar.gz",稍后查询成绩。 2、目录结构: SDK-gcc/ ├── bin/ 可执行二进制文件路径,编译后动态创建 ├── build/ makefile路径 │ └── Makefile ├── future_net/ 代码路径 │ ├── lib/ │ │ ├── lib_io.h lib中读写文件的头文件 │ │ ├── lib_record.h lib中将输出结果记录到缓冲区的头文件 │ │ └── lib_time.h lib中打印时间的头文件 │ ├── CMakeLists.txt cmake │ ├── future_net.cpp main函数源文件 │ ├── route.cpp 你要写代码的源文件 │ └── route.h 你要写代码的头文件 ├── lib/ 链接库路径 │ ├── 32/ │ │ └── lib_io.a 基于32位编译的链接库 │ └── 64/ │ └── lib_io.a 基于64位编译的链接库 ├── batch32.sh 基于32位系统使用的编译、链接、打包批处理脚本 ├── batch64.sh 基于64位系统使用的编译、链接、打包批处理脚本 └── readme.txt 你正在看的文件 -_-" 这不用介绍了吧 3、shell脚本说明: 根据你的系统选择32位脚本或者64位脚本。 执行此脚本可以实现一键编译、链接、打包。如果编译和链接正确,会在bin/下生成future_net二进制文件,并按照大赛要求生成二进制文件与代码的压缩打包文件存处于SDK/下。 注意: 1)shell脚本会清空bin/下的所有文件和路径,以及build/下除了Makefile外的所有文件和路径。请不要在此保存你的任何文档; 2)如果使用shell脚本一键功能,请不要修改任何路径名和文件名,并保持各路径和文件的位置关系不变。 4、手工操作说明: 1)根据自己的系统选择32位或者64位的lib_io.a,将其复制到SDK/lib/下; 2)进入build/下,执行make完成编译和链接。生成的二进制文件存放于bin/下; 3)将生成的二进制文件和代码路径置于同一级路径下,打包压缩生成"future_net.tar.gz"。 5、SDK代码说明: 我们已经提供了保姆式的服务,你只需要做: 1)实现route.cpp文件中的route接口; 2)依次调用record_result将路径结果写入缓冲区; 3)如果计算结果为没有路径,则不需要调用record_result接口即可直接输出NA。 SDK已经实现了读取文件、按要求格式写文件以及打印开始和结束时间的功能。 注意:读取文件功能是指,将图的信息文件和路径信息文件按行读取到内存,其在内存中的存储格式仍是字符串格式。因为这些信息以什么格式存储涉及到算法设计,这样做是为了不禁锢你的思路。 注意:如果增加了源文件需要修改Makefile文件。可自行选择手工修改或者使用cmake修改,但最终要将修改好的Makefile文件放置于buile/路径下。