This project implements Route Planning based on the A* algorithm using OpenStreetMap.
It is part of the C++ Nanodegree and forked off of the provided starter code.
When cloning this project, be sure to use the --recurse-submodules
flag. Using HTTPS:
git clone https://github.com/kkufieta/openstreetmap_routeplanner_astar.git --recurse-submodules
- cmake >= 3.11.3
- All OSes: click here for installation instructions
- make >= 4.1 (Linux, Mac), 3.81 (Windows)
- Linux: make is installed by default on most Linux distros
- Mac: install Xcode command line tools to get make
- Windows: Click here for installation instructions
- gcc/g++ >= 7.4.0
- Linux: gcc / g++ is installed by default on most Linux distros
- Mac: same instructions as make - install Xcode command line tools
- Windows: recommend using MinGW
- IO2D
- Installation instructions for all operating systems can be found here
- This library must be built in a place where CMake
find_package
will be able to find it
Assumption: The following are successfully installed (see instructions above):
- cmake >= 3.11.3,
- make >= 4.1 and
- g++ >= 7.4.0
Follow these steps to install IO2D:
- Download a fresh build of libc++ from http://releases.llvm.org/6.0.0/clang+llvm-6.0.0-x86_64-apple-darwin.tar.xz
- Export appropriate CXX and LD flags to make clang use this version of the standard library (replace NEWPATH with a path of extracted archive contents):
- In my machine, I unzipped the libc++ build here,
/Users/kat/Library/Cpp/
. - I added following entries in
.bash_profile
file (make sure to replace my path/Users/kat/Library/Cpp/
with the path where you've saved the libc++ build):
export CXXFLAGS="-nostdinc++ -isystem/Users/kat/Library/Cpp/clang+llvm-6.0.0-x86_64-apple-darwin/include/c++/v1"
export LDFLAGS="-L/Users/kat/Library/Cpp/clang+llvm-6.0.0-x86_64-apple-darwin/lib -Wl,-rpath,/Users/kat/Library/Cpp/clang+llvm-6.0.0-x86_64-apple-darwin/lib"
- Open a new terminal and then execute below commands:
- Install Brew (if you haven't already):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Install libpng (if you haven't already):
brew install libpng
git clone --recurse-submodules https://github.com/cpp-io2d/P0267_RefImpl
Note: I cloned this folder also inside/Users/kat/Library/Cpp/
cd P0267_RefImpl
mkdir Debug
cd Debug
cmake --config Debug "-DCMAKE_BUILD_TYPE=Debug" -DIO2D_DEFAULT=COREGRAPHICS_MAC ..
cmake --build .
make
sudo make install
- After this, this project should build by following the steps below.
To compile the project, first, create a build
directory and change to that directory:
mkdir build && cd build
From within the build
directory, then run cmake
and make
as follows:
cmake ..
make
The executable will be placed in the build
directory. From within build
, you can run the project as follows:
./OSM_A_star_search
Or to specify a map file:
./OSM_A_star_search -f ../<your_osm_file.osm>
The testing executable is also placed in the build
directory. From within build
, you can run the unit tests as follows:
./test