Improve error handling in applen and ability to build outside the source tree.

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
Andrea Odetti 2019-11-03 10:21:02 +00:00
parent 3632a06c4b
commit 92c257d1e5
4 changed files with 25 additions and 2 deletions

View file

@ -12,6 +12,10 @@ MESSAGE("CMAKE_CXX_FLAGS_RELWIHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
# used in applen for std::silesystem
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include_directories(source) include_directories(source)
add_subdirectory(source) add_subdirectory(source)

View file

@ -34,3 +34,6 @@ target_link_libraries(applen
Boost::program_options Boost::program_options
appleii appleii
) )
add_custom_target(copy-resources ALL
COMMAND cmake -E copy_directory ${CMAKE_SOURCE_DIR}/resource ${CMAKE_BINARY_DIR}/resource)

View file

@ -4,6 +4,7 @@
#include "Log.h" #include "Log.h"
#include <boost/property_tree/ini_parser.hpp> #include <boost/property_tree/ini_parser.hpp>
#include <filesystem>
class Configuration class Configuration
{ {
@ -30,9 +31,16 @@ class Configuration
std::shared_ptr<Configuration> Configuration::instance; std::shared_ptr<Configuration> Configuration::instance;
Configuration::Configuration(const std::string & filename) : myFilename(filename) Configuration::Configuration(const std::string & filename) : myFilename(filename)
{
if (std::filesystem::exists(filename))
{ {
boost::property_tree::ini_parser::read_ini(myFilename, myINI); boost::property_tree::ini_parser::read_ini(myFilename, myINI);
} }
else
{
LogFileOutput("Registry: configuration file '%s' not found\n", filename.c_str());
}
}
Configuration::~Configuration() Configuration::~Configuration()
{ {

View file

@ -325,6 +325,14 @@ namespace
} }
int main(int argc, const char * argv []) int main(int argc, const char * argv [])
{
try
{ {
return foo(argc, argv); return foo(argc, argv);
} }
catch (const std::exception & e)
{
std::cerr << e.what() << std::endl;
return 1;
}
}