From: guigues Date: Tue, 30 Sep 2008 09:47:51 +0000 (+0000) Subject: * creaNewProject executable X-Git-Tag: v0.1.0~12 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=16fa26d7830175d0d6f952982128c2d63b724f78;p=crea.git * creaNewProject executable * new cmake macros : CREA_ADD_EXECUTABLE and CREA_ADD_WX_EXECUTABLE * patched creaWx.h : macro CREA_WXMAIN_WITH_CONSOLE --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 85de6e0..a87f8ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ PROJECT(CREA) INCLUDE(Version.cmake) - +SET(CREA_VERBOSE_CMAKE TRUE) SET(CREA_CMAKE_REL_PATH cmake) SET(CREA_CMAKE_DIR ${PROJECT_SOURCE_DIR}/${CREA_CMAKE_REL_PATH}) INCLUDE(${CREA_CMAKE_DIR}/CREAMacros.cmake) diff --git a/appli/creaNewProject/CMakeLists.txt b/appli/creaNewProject/CMakeLists.txt index a9a08ab..a63b05e 100644 --- a/appli/creaNewProject/CMakeLists.txt +++ b/appli/creaNewProject/CMakeLists.txt @@ -1,7 +1,27 @@ + +#============================================================================ +# Builds and install the executable creaNewProject + +SET(EXE_NAME creaNewProject) +SET(${EXE_NAME}_SOURCES creaNewProject.cpp) +SET(${EXE_NAME}_CONSOLE FALSE) +SET(${EXE_NAME}_LINK_LIBRARIES crea) + +CREA_ADD_WX_EXECUTABLE( ${EXE_NAME} ) +#============================================================================ + + + + + + + + + +#============================================================================ # Installs creaNewProject.bat/.sh # used to creates the file architecture for a new project # and configures/installs the empty project structure used by creaNewProject - SET(INPUT_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/NewProject) FILE(GLOB_RECURSE NAMES RELATIVE ${INPUT_PROJECT_DIR} *.txt *.in *.cmake ) @@ -59,7 +79,7 @@ ELSE(WIN32) # Build tree CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/creaNewProject.sh.in - ${EXECUTABLE_OUTPUT_PATH}/creaNewProject + ${EXECUTABLE_OUTPUT_PATH}/creaNewProject.sh @ONLY IMMEDIATE ) CREA_MKDIR(${EXECUTABLE_OUTPUT_PATH}/creaNewProject_data) @@ -74,7 +94,7 @@ ELSE(WIN32) # Install tree INSTALL( - FILES ${EXECUTABLE_OUTPUT_PATH}/creaNewProject + FILES ${EXECUTABLE_OUTPUT_PATH}/creaNewProject.sh DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) diff --git a/appli/creaNewProject/creaNewProject.cpp b/appli/creaNewProject/creaNewProject.cpp new file mode 100644 index 0000000..c2c9065 --- /dev/null +++ b/appli/creaNewProject/creaNewProject.cpp @@ -0,0 +1,52 @@ +#include +#include +class myApp : public wxApp +{ +public: + bool OnInit( ); + int OnExit() { return true; } +}; + +IMPLEMENT_APP(myApp); +CREA_WXMAIN_WITH_CONSOLE + +bool myApp::OnInit( ) +{ + wxApp::OnInit(); +#ifdef __WXGTK__ + //See http://www.wxwindows.org/faqgtk.htm#locale + setlocale(LC_NUMERIC, "C"); +#endif + wxInitAllImageHandlers(); + + wxString dir = wxDirSelector(_T("Select directory in which to create the project"), _T(""), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST ); + + if (dir.IsEmpty()) return false; + + wxString name = wxGetTextFromUser(_T("Enter project name"), + _T("creaNewProject"), + _T("New")); + if (name.IsEmpty()) return false; + +#if(_WIN32) + std::string command("creaNewProject.bat "); +#else + std::string command("creaNewProject.sh "); +#endif + command += crea::wx2std(dir) + " " + crea::wx2std(name); + + if ( ! system ( command.c_str() ) ) + { + wxMessageBox(_T("Done !"),_T("creaNewProject"), + wxOK | wxICON_INFORMATION); + } + else + { + wxString err("An error occured while running '"); + err += crea::std2wx(command) + _T("'"); + wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR); + } + + return false; +} + diff --git a/appli/creaNewProject/creaNewProject.sh.in b/appli/creaNewProject/creaNewProject.sh.in index e2d12b6..c74f844 100755 --- a/appli/creaNewProject/creaNewProject.sh.in +++ b/appli/creaNewProject/creaNewProject.sh.in @@ -24,7 +24,7 @@ PROJECT=$2 if [ -d $OUTPUT/${PROJECT} ] then echo "ERROR : Directory '$OUTPUT/${PROJECT}' already exists !" - exit + exit 1 fi echo "** Creating new project '$PROJECT' in folder '$OUTPUT'" @@ -32,7 +32,7 @@ echo "** Creating new project '$PROJECT' in folder '$OUTPUT'" if [ ! -d $OUTPUT ] then echo "ERROR : Directory '$OUTPUT' does not exist !" - exit + exit 1 fi cp -R ${INPUT} "$OUTPUT/$PROJECT" diff --git a/cmake/CREAMacro_AddExecutable.cmake b/cmake/CREAMacro_AddExecutable.cmake new file mode 100644 index 0000000..53c6e0f --- /dev/null +++ b/cmake/CREAMacro_AddExecutable.cmake @@ -0,0 +1,21 @@ +MACRO(CREA_ADD_EXECUTABLE EXE_NAME) + + IF(CREA_VERBOSE_CMAKE) + MESSAGE(STATUS "** Creating executable ${EXE_NAME}") + MESSAGE(STATUS " Sources : ${${EXE_NAME}_SOURCES}") + MESSAGE(STATUS " Link libs: ${${EXE_NAME}_LINK_LIBRARIES}") + ENDIF(CREA_VERBOSE_CMAKE) + + IF(WIN32) + ADD_EXECUTABLE(${EXE_NAME} WIN32 ${${EXE_NAME}_SOURCES}) + ELSE(WIN32) + ADD_EXECUTABLE(${EXE_NAME} ${${EXE_NAME}_SOURCES}) + ENDIF(WIN32) + + TARGET_LINK_LIBRARIES(${EXE_NAME} ${${EXE_NAME}_LINK_LIBRARIES}) + + INSTALL_TARGETS(/bin/ ${EXE_NAME}) + +ENDMACRO(CREA_ADD_EXECUTABLE) + + diff --git a/cmake/CREAMacro_AddWxExecutable.cmake b/cmake/CREAMacro_AddWxExecutable.cmake new file mode 100644 index 0000000..4fdd9eb --- /dev/null +++ b/cmake/CREAMacro_AddWxExecutable.cmake @@ -0,0 +1,32 @@ +MACRO(CREA_ADD_WX_EXECUTABLE EXE_NAME) + + + IF(USE_WXWIDGETS) + IF(CREA_VERBOSE_CMAKE) + MESSAGE(STATUS "** Creating wx executable ${EXE_NAME}") + MESSAGE(STATUS " Sources : ${${EXE_NAME}_SOURCES}") + MESSAGE(STATUS " Link libs: ${${EXE_NAME}_LINK_LIBRARIES}") + IF(WIN32) + MESSAGE(STATUS " Console : ${${EXE_NAME}_CONSOLE}") + ENDIF(WIN32) + ENDIF(CREA_VERBOSE_CMAKE) + + + IF(WIN32) + ADD_EXECUTABLE(${EXE_NAME} WIN32 ${${EXE_NAME}_SOURCES}) + IF( ${${EXE_NAME}_CONSOLE} ) + SET_TARGET_PROPERTIES(${EXE_NAME} PROPERTIES LINK_FLAGS /subsystem:console ) + ENDIF( ${${EXE_NAME}_CONSOLE} ) + ELSE(WIN32) + ADD_EXECUTABLE(${EXE_NAME} ${${EXE_NAME}_SOURCES}) + ENDIF(WIN32) + + TARGET_LINK_LIBRARIES(${EXE_NAME} ${${EXE_NAME}_LINK_LIBRARIES}) + INSTALL_TARGETS(/bin/ ${EXE_NAME}) + ENDIF(USE_WXWIDGETS) + + + +ENDMACRO(CREA_ADD_WX_EXECUTABLE) + + diff --git a/cmake/CREAMacro_mkdir.cmake b/cmake/CREAMacro_mkdir.cmake new file mode 100644 index 0000000..84e7784 --- /dev/null +++ b/cmake/CREAMacro_mkdir.cmake @@ -0,0 +1,10 @@ + +#======================================================================== +# Creates a directory if it does not exist +MACRO(CREA_MKDIR DIR) + IF(NOT IS_DIRECTORY ${DIR}) + MESSAGE(STATUS "* Creating directory '${DIR}'") + FILE(MAKE_DIRECTORY ${DIR}) + ENDIF(NOT IS_DIRECTORY ${DIR}) +ENDMACRO(CREA_MKDIR) +#======================================================================== diff --git a/cmake/CREAMacros.cmake b/cmake/CREAMacros.cmake index f0cc2e1..0a11ab1 100644 --- a/cmake/CREAMacros.cmake +++ b/cmake/CREAMacros.cmake @@ -19,17 +19,17 @@ INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_AddLibrary.cmake ) #======================================================================== #======================================================================== -INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_PreventInSourceBuild.cmake ) +INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_AddExecutable.cmake ) #======================================================================== +#======================================================================== +INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_AddWxExecutable.cmake ) +#======================================================================== +#======================================================================== +INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_PreventInSourceBuild.cmake ) +#======================================================================== #======================================================================== -# Creates a directory if it does not exist -MACRO(CREA_MKDIR DIR) - IF(NOT IS_DIRECTORY ${DIR}) - MESSAGE(STATUS "* Creating directory '${DIR}'") - FILE(MAKE_DIRECTORY ${DIR}) - ENDIF(NOT IS_DIRECTORY ${DIR}) -ENDMACRO(CREA_MKDIR) +INCLUDE( ${CREA_CMAKE_DIR}/CREAMacro_mkdir.cmake ) #======================================================================== diff --git a/src/creaWx.h b/src/creaWx.h index 3a7d6bb..29fb061 100644 --- a/src/creaWx.h +++ b/src/creaWx.h @@ -37,6 +37,27 @@ typedef void wxWindow; //=========================================================================== #ifdef USE_WXWIDGETS + + +#if defined(_WIN32) +// How to have a Console and wxWidgets +// http://www.wxwidgets.org/wiki/index.php/MSVC_Setup_Guide +// In Visual C++ 6 (7 should be similar), to create an application that is both a console application +// (cout's to the console are visible) and has a wxWidgets GUI, +// you need to use the linker option "/subsystem:console" and the following code: +#define CREA_WXMAIN_WITH_CONSOLE \ + int main(int argc, char* argv[]) \ + { \ + return WinMain(::GetModuleHandle(NULL), NULL, \ + ::GetCommandLine(), SW_SHOWNORMAL); \ + } +#else // defined(_WIN32) +#define CREA_WXMAIN_WITH_CONSOLE +#endif // defined(_WIN32) + + + + namespace crea { //==================================================================