Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 11, 2009, 5:57:18 PM (15 years ago)
Author:
rgrieder
Message:

Added plugin path that gets configured in BuildConfig.cmake and correctly set in Core.

Location:
code/branches/libraries/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/libraries/src/SpecialConfig.h.in

    r3370 r5625  
    7474    // INSTALLATION PATHS
    7575    const char ORXONOX_RUNTIME_INSTALL_PATH[] = "@ORXONOX_RUNTIME_INSTALL_PATH@";
     76    const char ORXONOX_PLUGIN_INSTALL_PATH[]  = "@ORXONOX_PLUGIN_INSTALL_PATH@";
    7677    const char ORXONOX_MEDIA_INSTALL_PATH[]   = "@ORXONOX_MEDIA_INSTALL_PATH@";
    7778    /* Config and Log path might be relative because they could be user and therefore runtime dependent */
     
    8283    const char ORXONOX_MEDIA_DEV_PATH[]       = "@CMAKE_MEDIA_OUTPUT_DIRECTORY@";
    8384#ifdef CMAKE_CONFIGURATION_TYPES
     85    const char ORXONOX_PLUGIN_DEV_PATH[]      = "@CMAKE_PLUGIN_OUTPUT_DIRECTORY@/" BOOST_PP_STRINGIZE(CMAKE_BUILD_TYPE);
    8486    const char ORXONOX_CONFIG_DEV_PATH[]      = "@CMAKE_CONFIG_OUTPUT_DIRECTORY@/" BOOST_PP_STRINGIZE(CMAKE_BUILD_TYPE);
    8587    const char ORXONOX_LOG_DEV_PATH[]         = "@CMAKE_LOG_OUTPUT_DIRECTORY@/"    BOOST_PP_STRINGIZE(CMAKE_BUILD_TYPE);
  • code/branches/libraries/src/core/Core.cc

    r3370 r5625  
    241241        boost::filesystem::path rootPath_;
    242242        boost::filesystem::path executablePath_;        //!< Path to the executable
     243        boost::filesystem::path pluginPath_;            //!< Path to the plugins
    243244        boost::filesystem::path mediaPath_;             //!< Path to the media file folder
    244245        boost::filesystem::path configPath_;            //!< Path to the config file folder
     
    256257        , bGraphicsLoaded_(false)
    257258    {
    258         // Parse command line arguments first
     259        // Set the hard coded fixed paths
     260        this->setFixedPaths();
     261
     262        // TODO: Load plugins
     263
     264        // Parse command line arguments AFTER the plugins have been loaded (static code!)
    259265        CommandLine::parseCommandLine(cmdLine);
    260266
    261         // Determine and set the location of the executable
    262         setExecutablePath();
    263 
    264         // Determine whether we have an installed or a binary dir run
    265         // The latter occurs when simply running from the build directory
    266         checkDevBuild();
    267 
    268         // Make sure the directories we write in exist or else make them
    269         createDirectories();
     267        // Set configurable paths like log, config and media
     268        this->setConfigurablePaths();
    270269
    271270        // create a signal handler (only active for linux)
     
    507506    /**
    508507    @brief
    509         Compares the executable path with the working directory
    510     */
    511     void Core::setExecutablePath()
    512     {
     508        Retrievs the executable path and sets all hard coded fixed path (currently only plugin path)
     509        Also checks for "orxonox_dev_build.keep_me" in the executable diretory.
     510        If found it means that this is not an installed run, hence we
     511        don't write the logs and config files to ~/.orxonox
     512    @throw
     513        GeneralException
     514    */
     515    void Core::setFixedPaths()
     516    {
     517        //////////////////////////
     518        // FIND EXECUTABLE PATH //
     519        //////////////////////////
     520
    513521#ifdef ORXONOX_PLATFORM_WINDOWS
    514522        // get executable module
     
    553561        configuration_->executablePath_ = configuration_->executablePath_.branch_path(); // remove executable name
    554562#endif
    555     }
    556 
    557     /**
    558     @brief
    559         Checks for "orxonox_dev_build.keep_me" in the executable diretory.
    560         If found it means that this is not an installed run, hence we
    561         don't write the logs and config files to ~/.orxonox
    562     @throws
    563         GeneralException
    564     */
    565     void Core::checkDevBuild()
    566     {
     563
     564        /////////////////////
     565        // SET PLUGIN PATH //
     566        /////////////////////
     567
    567568        if (boost::filesystem::exists(configuration_->executablePath_ / "orxonox_dev_build.keep_me"))
    568569        {
    569570            COUT(1) << "Running from the build tree." << std::endl;
    570571            Core::bDevRun_ = true;
    571             configuration_->mediaPath_  = ORXONOX_MEDIA_DEV_PATH;
    572             configuration_->configPath_ = ORXONOX_CONFIG_DEV_PATH;
    573             configuration_->logPath_    = ORXONOX_LOG_DEV_PATH;
     572            configuration_->pluginPath_ = ORXONOX_PLUGIN_DEV_PATH;
    574573        }
    575574        else
    576575        {
     576
    577577#ifdef INSTALL_COPYABLE // --> relative paths
     578
    578579            // Also set the root path
    579580            boost::filesystem::path relativeExecutablePath(ORXONOX_RUNTIME_INSTALL_PATH);
     
    585586                ThrowException(General, "Could not derive a root directory. Might the binary installation directory contain '..' when taken relative to the installation prefix path?");
    586587
     588            // Plugin path is fixed as well
     589            configuration_->pluginPath_ = configuration_->rootPath_ / ORXONOX_PLUGIN_INSTALL_PATH;
     590
     591#else
     592
     593            // There is no root path, so don't set it at all
     594            // Plugin path is fixed as well
     595            configuration_->pluginPath_ = ORXONOX_PLUGIN_INSTALL_PATH;
     596
     597#endif
     598        }
     599    }
     600
     601    /**
     602    @brief
     603        Sets config, log and media path and creates folders if necessary.
     604    @throws
     605        GeneralException
     606    */
     607    void Core::setConfigurablePaths()
     608    {
     609        if (Core::isDevelopmentRun())
     610        {
     611            configuration_->mediaPath_  = ORXONOX_MEDIA_DEV_PATH;
     612            configuration_->configPath_ = ORXONOX_CONFIG_DEV_PATH;
     613            configuration_->logPath_    = ORXONOX_LOG_DEV_PATH;
     614        }
     615        else
     616        {
     617
     618#ifdef INSTALL_COPYABLE // --> relative paths
     619
    587620            // Using paths relative to the install prefix, complete them
    588621            configuration_->mediaPath_  = configuration_->rootPath_ / ORXONOX_MEDIA_INSTALL_PATH;
    589622            configuration_->configPath_ = configuration_->rootPath_ / ORXONOX_CONFIG_INSTALL_PATH;
    590623            configuration_->logPath_    = configuration_->rootPath_ / ORXONOX_LOG_INSTALL_PATH;
     624
    591625#else
    592             // There is no root path, so don't set it at all
    593626
    594627            configuration_->mediaPath_  = ORXONOX_MEDIA_INSTALL_PATH;
     
    607640            configuration_->configPath_ = userDataPath / ORXONOX_CONFIG_INSTALL_PATH;
    608641            configuration_->logPath_    = userDataPath / ORXONOX_LOG_INSTALL_PATH;
    609 #endif
     642
     643#endif
     644
    610645        }
    611646
     
    617652            configuration_->logPath_    = configuration_->logPath_    / directory;
    618653        }
    619     }
    620 
    621     /*
    622     @brief
    623         Checks for the log and the config directory and creates them
    624         if necessary. Otherwise me might have problems opening those files.
    625     @throws
    626         orxonox::GeneralException if the directory to be created is a file.
    627     */
    628     void Core::createDirectories()
    629     {
     654
     655        // Create directories to avoid problems when opening files in non existent folders.
    630656        std::vector<std::pair<boost::filesystem::path, std::string> > directories;
    631657        directories.push_back(std::make_pair(boost::filesystem::path(configuration_->configPath_), "config"));
  • code/branches/libraries/src/core/Core.h

    r3370 r5625  
    114114            Core(const Core&); //!< Don't use (undefined symbol)
    115115
    116             void checkDevBuild();
    117             void setExecutablePath();
    118             void createDirectories();
     116            void setFixedPaths();
     117            void setConfigurablePaths();
    119118            void setThreadAffinity(int limitToCPU);
    120119
Note: See TracChangeset for help on using the changeset viewer.