Skip to content

abandonware-pjz37/weather

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple cross-platform open source weather by city application. Hunter package manager usage example.

Used service

C/C++ core

Build system

  • CMake
  • with modules:
  • Sugar - tools, wrappers, workarounds, ...
  • Polly - toolchain files
  • Hunter - package manager

Requirements

  • CMake version 3.0 (more)
  • HUNTER_ROOT environment variable (more)
  • Python 3 (For Xcode and Visual Studio based projects)
  • POLLY_ROOT environment variable (for toolchain-based builds, more)

Usage

Note that a lot of time (> 1 hour) and space (> 1 GB) may be required for build, so be patient and consider test this tiny-project before run.

Download and unpack

Download and unpack current release archive and cd to unpacked directory. Unix-style:

> wget https://github.com/ruslo/weather/archive/v1.2.0.tar.gz
> tar xf v1.2.0.tar.gz
> cd weather-1.2.0

Build and test

Windows (Visual Studio, tested with 2013 32/64)
  • Run cmd and check cmake version, HUNTER_ROOT environment, python 3:
> where cmake
\path\to\cmake
> cmake --version
cmake version 3.0.0
> where python
\path\to\python.exe
> python --version
Python 3.x.x
> echo %HUNTER_ROOT%
\path\to\hunter\root
  • Start build:
> cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -G"Visual Studio 12 2013 Win64"
> cmake --build _builds --config Release
  • Test it:
> _builds\Release\weather-cli.exe Madrid > result.txt
# open result.txt with utf-8 friendly text editor (notepad fits fine)
Windows (cygwin)
  • Not working (g++-4.8.3 don't have std::to_string which is used by CppNetlib.URI)
Linux
  • Check cmake version, HUNTER_ROOT and POLLY_ROOT environment variables:
> which cmake
/path/to/cmake
> cmake --version
cmake version 3.0.0
> echo $HUNTER_ROOT
/path/to/hunter/root/
> echo $POLLY_ROOT
/path/to/toolchains
  • Pick toolchain with c++11 support, for example gcc (gcc -std=c++11):
> ls $POLLY_ROOT/gcc.cmake
/path/to/toolchains/gcc.cmake
  • Start build:
> cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$POLLY_ROOT/gcc.cmake
> cmake --build _builds
  • Test it:
> ./_builds/weather-cli Madrid
City: Madrid
Success...
  longitude: -3.7
  latitude: 40.42
  temperature: 17.17
  temperature(human): +17.2 ℃
  description: sky is clear
  icon: 02d
Done
Mac (Xcode)
  • Check cmake version, python 3, HUNTER_ROOT and POLLY_ROOT environment variables:
> which cmake
/path/to/cmake
> cmake --version
cmake version 3.0.0
> which python3
/path/to/python3
> echo $HUNTER_ROOT
/path/to/hunter/root/
> echo $POLLY_ROOT
/path/to/toolchains
  • Check xcode toolchain and start build:
> ls $POLLY_ROOT/xcode.cmake
/path/to/toolchains/xcode.cmake
> cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$POLLY_ROOT/xcode.cmake -GXcode
> cmake --build _builds --config Release
  • Test it:
> ./_builds/Release/weather-cli Madrid
City: Madrid
Success...
  longitude: -3.7
  latitude: 40.42
  temperature: 21.69
  temperature(human): +21.7 ℃
  description: Sky is Clear
  icon: 01d
Done
Mac (Makefile)
  • Check cmake version, HUNTER_ROOT and POLLY_ROOT environment variables:
> which cmake
/path/to/cmake
> cmake --version
cmake version 3.0.0
> echo $HUNTER_ROOT
/path/to/hunter/root/
> echo $POLLY_ROOT
/path/to/toolchains
  • Pick toolchain with c++11 support, for example libcxx (clang -std=c++11 -stdlib=libc++):
> ls $POLLY_ROOT/libcxx.cmake
/path/to/toolchains/libcxx.cmake
  • Start build:
> cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$POLLY_ROOT/libcxx.cmake
> cmake --build _builds
  • Test it:
> ./_builds/weather-cli Madrid
City: Madrid
Success...
  longitude: -3.7
  latitude: 40.42
  temperature: 17.71
  temperature(human): +17.7 ℃
  description: Sky is Clear
  icon: 01d
Done
Mac (iOS)
  • Build patched cmake and add it to the PATH:
> CMAKE_VERSION="3.0.0-ios-universal"
> wget "https://github.com/ruslo/CMake/archive/v${CMAKE_VERSION}.tar.gz"
> tar xf "v${CMAKE_VERSION}.tar.gz"
> cd "CMake-${CMAKE_VERSION}"
> cmake -H. -B_builds -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="`pwd`/_install" -DCMAKE_USE_SYSTEM_CURL=YES
> cmake --build _builds --target install
> export PATH="`pwd`/_install/bin:${PATH}"
> cd ..
  • Check cmake version, python 3, HUNTER_ROOT and POLLY_ROOT environment variables:
> which cmake
/path/to/patched/cmake/version/_install/bin/cmake
> cmake --version
cmake version 3.0.0
> which python3
/path/to/python3
> echo $HUNTER_ROOT
/path/to/hunter/root/
> echo $POLLY_ROOT
/path/to/toolchains
  • Check ios toolchain and install dependencies:
> ls $POLLY_ROOT/ios.cmake
/path/to/toolchains/ios.cmake
> cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$POLLY_ROOT/ios.cmake -GXcode
  • Open project in Xcode and build/run on target you need:
> open _builds/Weather.xcodeproj

AppStore