svn checkout -r 4179 http://upp-mirror.googlecode.com/svn/trunk/uppsrc upp svn export upp uppsrc
svn checkout -r 4179 http://upp-mirror.googlecode.com/svn/trunk/rainbow rainbow svn export rainbow uppsrc/rainbow
_start_here.bat rem For GCC compiler build.bat rem For Microsoft Visual C++ 9.0 compiler build_MSC9.bat rem For rainbow support build_MSC9_RAINBOW.bat
./build.sh # For rainbow support ./build_RAINBOW.sh
set(SRC_LIST # C/C++ files ) add_library(PackageName ${SRC_LIST}) set(USES_LIST) # dependent packages to link set(LINK_LIST) # libraries to link if(DEFINED USES_LIST) add_dependencies(PackageName ${USES_LIST}) endif(DEFINED USES_LIST) if(DEFINED USES_LIST OR DEFINED LINK_LIST) target_link_libraries(PackageName ${USES_LIST} ${LINK_LIST}) endif(DEFINED USES_LIST OR DEFINED LINK_LIST)
CreateFile;C:\Windows\Resources\Themes\aero\aero.msstyles etc.) QueryBasicInformationFile;C:\Windows\Resources\Themes\aero\aero.msstyles
Hi!
I'm trying to use CMake to have QtCreator as my main UPP IDE.
Compilation & link is ok, but at runtime the GUI theme doesn't seems to apply.
I attached what I get for SQLApp: the window background is darker and popup menu background is totally black..
#include "SqlCtrl_init.icpp"
warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
include_directories( . ) set( sources SQLApp.h SQLApp.sch query.cpp book.cpp borrow.cpp main.cpp Theme.cpp Theme.h C:/upp/uppsrc/CodeEditor/CRegister.icpp.cpp C:/upp/uppsrc/Core/Core_init.icpp.cpp C:/upp/uppsrc/CtrlCore/CtrlCore.icpp.cpp C:/upp/uppsrc/CtrlLib/CtrlLib.icpp.cpp C:/upp/uppsrc/plugin/bmp/BmpReg.icpp.cpp C:/upp/uppsrc/plugin/png/pngreg.icpp.cpp C:/upp/uppsrc/Report/ReportI.icpp.cpp C:/upp/uppsrc/RichText/RichImage.icpp.cpp C:/upp/uppsrc/SqlCtrl/SqlCtrl_init.icpp.cpp ) add_executable( SQLApp WIN32 ${sources} )
Yeah, it's working :)
Quite ugly, but I manually added the icpp files to the application target to make it sure they are linked with it, and everything ok!
function(add_init_file init_file copied_file) # Creates ${init_file}.cpp inside binary directory with #include path to ${init_file} # and returns the path to copied_file set(input_file ${CMAKE_CURRENT_SOURCE_DIR}/${init_file}) if(EXISTS "${input_file}") set(output_file "${CMAKE_CURRENT_BINARY_DIR}/${init_file}.cpp") file(WRITE "${output_file}" "#include \"${input_file}\"\n") set(${copied_file} "${output_file}" PARENT_SCOPE) endif() endfunction()
# Header files set(H_LIST ) # Compilable files set(SRC_LIST ) # The *.icpp files. Just to edit/view them inside of IDEs set(ISRC_LIST CtrlCore.icpp ) set_source_files_properties(${H_LIST} ${ISRC_LIST} PROPERTIES HEADER_FILE_ONLY ON) add_init_file(init INIT_FILE) add_library(CtrlCore ${INIT_FILE} ${SRC_LIST} ${H_LIST} ${ISRC_LIST}) # And so on
Your script is working, and creates the ini files in the bin dir, but they are not linked with the main app exe
Also, since it's constantly updating the init.cpp files, CMake recompile them all the time.
What I said might look like as rudeness, but it is not.
There were many CMake releases (and possible compatibility issues for previous versions) from 2011 year.
Constantly updating the attachments for new versions of U++ and CMake is not productive, in my opinion, especially when done manually.
This topic is open for questions, related to the topic messages. But they might be quite outdated, when used with modern U++ and CMake.
If you have a (new) method or a way how to use CMake and U++, then better to create a new topic about this, in my opinion.
function(create_cpps_from_icpps ) file( GLOB icpp_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*.icpp" ) foreach( icppFile ${icpp_files} ) set(output_file "${CMAKE_CURRENT_BINARY_DIR}/${icppFile}.cpp") file(WRITE "${output_file}" "#include \"${CMAKE_CURRENT_SOURCE_DIR}/${icppFile}\"\n") endforeach() endfunction()
set( sources SQLApp.h SQLApp.sch query.cpp book.cpp borrow.cpp main.cpp ) file( GLOB_RECURSE ini_files "${CMAKE_CURRENT_BINARY_DIR}/../*.icpp.cpp" ) add_executable( SQLApp WIN32 ${sources} ${ini_files} )
add_subdirectory( "plugin/z" ) add_subdirectory( Core ) add_subdirectory( Draw ) add_subdirectory( "plugin/bmp" ) add_subdirectory( "plugin/png" ) add_subdirectory( RichText ) add_subdirectory( CtrlCore ) add_subdirectory( CtrlLib ) add_subdirectory( "plugin/sqlite3" ) add_subdirectory( Sql ) add_subdirectory( SqlCtrl ) add_subdirectory( Report ) add_subdirectory( CodeEditor ) add_subdirectory( "plugin/pcre" ) add_subdirectory( "plugin/zip" )
Based on this discussion I created bash script to generate CMakeList.txt from the Ultimate++ project - see https://github.com/CoolmanCZ/upp_cmake
% cd upp_cmake % sed -i '.bak' -e '/^UPP_SRC_DIR/s/=/?&/' -e 's/LINUX/BSD -DflagFREEBSD/' GenerateCMakeFiles.sh % wget http://www.ultimatepp.org/downloads/upp-x11-src-9886.tar.gz % tar -xf upp-x11-src-9886.tar.gz % env UPP_SRC_DIR=upp-x11-src-9886/uppsrc bash GenerateCMakeFiles.sh % mkdir build && cd build && cmake -G Ninja ../ % ninja
cd uppmirror uppbox/Cmake/GenerateCMakeFiles-lib.sh uppsrc/ide/ide.upp "-DflagGUI -DflagGCC -DflagLINUX -DflagPOSIX -DflagSHARED" # I also copy your CMake generator to uppbox/lpbuild directory # uppbox/Cmake/
Hello Coolman,
I tried to use your script with upp git mirror. But it deosn't work. I called following command:
cd uppmirror uppbox/Cmake/GenerateCMakeFiles-lib.sh uppsrc/ide/ide.upp "-DflagGUI -DflagGCC -DflagLINUX -DflagPOSIX -DflagSHARED" # I also copy your CMake generator to uppbox/lpbuild directory # uppbox/Cmake/
It returns not output and cmake list is not generated either. I believe the minimal error output is needed.
Please provide support, if you can.
Sincerely,
Klugier