OK, thanks for your clarification. Please go ahead with your project. On Monday 02 March 2009, Henner Zeller wrote: | Hi, | | On Mon, Mar 2, 2009 at 12:25 AM, Jesper K. Pedersen wrote: | > Why would you want that? Doesn't that make KPA even less parallel in | > compiling or am I misunderstanding something? | | Several reasons; | First, I don't think that it makes the compiling less parallel. You | still can compile all sources in parallel, there is no difference | there. The only difference is, that it links intermediate libraries | that can make it potentially a bit slower if you compile from scratch | - that should be unnoticable. In fact it will probably turn out to be | faster if you do incremental compiles. | | The reason why I started this, and did some other dependency | untangling, was that I yesterday wanted to do some little performance | testing. For this I hoped to create a little standalone binary that | links in just the DB and XMLDB. | | Turns out that this is not possible because of the massive | interdependencies. So for instance the abstract DB code depends on the | MainWindow (!), which then in turn depends on everytyhing else. But | even if that dependency is cut, there are still hard dependencies to | Browser and Viewer for instance which then in turn pull in everything. | One reason for this interdpendence is of course that all sources used | to be compiled together and only linked into one binary - so nobody | notices. | For performance test binaries or just unit-tests, these dependencies | are harmful. Probably a big hindrance in developing the SQLDB because | we can only do in-system manual testing, hoping not to miss something. | | Some dependencies I could cut and least the Utilities-library I could | extract ;) Having things in different libraries helps thinking of not | adding more to the dependency entanglement. | | I do believe, that we should create a CMakeLists in each subdirectory | to further detangle this in the long term; I can do some compiling | performance tests if you want: it might be a bit slower if you compile | everything because gnumake unfortunately does not use all opportunity | to parellelize, but having the ability to focus on a particular piece | of code and do incremental compiles will be a win in the end in | turnaround times and not lost engineering hours. | | As for my performance test: I ended up compiling _all_sources together | with a different main but still couldn't make it to work because of | implicitly created singletons in GUI code somewhere - code that isn't | called of course in that test program. So after 6 hours of hope to | detangle dependencies I ended up adding test functions to the menu in | my local version :/ | | -h | | > On Monday 02 March 2009, Henner Zeller wrote: | > | SVN commit 933977 by hzeller: | > | | > | Pull out Utilities as separate library. | > | | > | | > |  M  +16 -12    CMakeLists.txt | > | | > | | > | --- trunk/extragear/graphics/kphotoalbum/CMakeLists.txt #933976:933977 | > | @@ -72,15 +72,14 @@ | > |  set(libSettings_SRCS | > | ${CMAKE_CURRENT_SOURCE_DIR}/Settings/SettingsData.cpp | > | ${CMAKE_CURRENT_SOURCE_DIR}/Settings/SettingsDialog.cpp | > | ${CMAKE_CURRENT_SOURCE_DIR}/Settings/ViewerSizeConfig.cpp | > | ${CMAKE_CURRENT_SOURCE_DIR}/Settings/CategoryItem.cpp) | > | | > |  set(libxmldb_SRCS | > | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/Database.cpp | > | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategoryCollection.cpp | > | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategory.cpp | > | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLImageDateCollection.cpp | > | +       ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/Database.cpp | > | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategoryCollection.cpp | > | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategory.cpp | > | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLImageDateCollection.cpp | > |       ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/NumberedBackup.cpp | > | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/FileReader.cpp | > | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/FileReader.cpp | > |       ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/FileWriter.cpp | > | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/IdNameMapper.cpp | > | -) | > | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/IdNameMapper.cpp) | > | | > |  set(libThumbnailView_SRCS | > |          ${CMAKE_CURRENT_SOURCE_DIR}/ThumbnailView/ThumbnailRequest.cpp | > | @@ -240,10 +239,19 @@ | > | | > |  ########### next target ############### | > | | > | -set(kphotoalbum_SRCS main.cpp ${libdatebar_SRCS} ${libSettings_SRCS} | > | ${libsurvey_SRCS} ${libxmldb_SRCS} ${libThumbnailView_SRCS} | > | ${libPlugins_SRCS} ${libViewer_SRCS} ${libCategoryListView_SRCS} | > | ${libHTMLGenerator_SRCS} ${libUtilities_SRCS} ${libMainWindow_SRCS} | > | ${libImageManager_SRCS} ${libDB_SRCS} ${libImportExport_SRCS} | > | ${libAnnotationDialog_SRCS} ${EXIV2_SRCS} ${libBrowser_SRCS}) | > | +set(kphotoalbum_SRCS main.cpp ${libdatebar_SRCS} ${libSettings_SRCS} | > | ${libsurvey_SRCS} ${libxmldb_SRCS} ${libThumbnailView_SRCS} | > | ${libPlugins_SRCS} ${libViewer_SRCS} ${libCategoryListView_SRCS} | > | ${libHTMLGenerator_SRCS} ${libMainWindow_SRCS} ${libImageManager_SRCS} | > | ${libDB_SRCS} ${libImportExport_SRCS} ${libAnnotationDialog_SRCS} | > | ${EXIV2_SRCS} ${libBrowser_SRCS}) | > | | > |  kde4_add_executable(kphotoalbum ${kphotoalbum_SRCS}) | > | | > | +kde4_add_library(Utilities STATIC ${libUtilities_SRCS}) | > | + | > | +# Internal components | > | +if(SQLDB_SUPPORT) | > | +  target_link_libraries(kphotoalbum SQLDB) | > | +endif(SQLDB_SUPPORT) | > | +target_link_libraries(kphotoalbum Utilities) | > | + | > | +# External components | > |  target_link_libraries(kphotoalbum  ${KDE4_KDE3SUPPORT_LIBS} | > | ${KDE4_KIO_LIBS} ${JPEG_LIBRARY} kmediaplayer ${KDE4_PHONON_LIBS}) | > | | > |  if(KIPI_FOUND) | > | @@ -268,10 +276,6 @@ | > |      INCLUDE_DIRECTORIES(${NEPOMUK_INCLUDE_DIR}) | > |  endif(NEPOMUK_FOUND) | > | | > | -if(SQLDB_SUPPORT) | > | -  target_link_libraries(kphotoalbum SQLDB) | > | -endif(SQLDB_SUPPORT) | > | - | > |  install(TARGETS kphotoalbum ${INSTALL_TARGETS_DEFAULT_ARGS}) | > | > -- | > Having trouble finding a given image in your collection containing | > thousands of images? | > | > http://www.kphotoalbum.org might be the answer. -- Having trouble finding a given image in your collection containing thousands of images? http://www.kphotoalbum.org might be the answer.