Where to find this code

Thomas Baumgart thb at net-bembel.de
Fri Dec 27 09:53:49 GMT 2019


Jesus,

the whole process of generation of the KMyMoney artifacts is divided into these parts:

a) configuration
b) compilation / linkage
c) installation

Step a) is where cmake comes into play. Its job is to convert the meta information provided in CMakeLists.txt files into lower level Makefiles (depending on the build tool/generator used). This step caches some information which will not be re-evaluated if you re-run cmake. To get a full scan remove build/CMakeCache.txt and re-run cmake. Removing CMakeCache.txt also wipes all the settings you have made using ccmake.

Step b) is invoked by calling 'make' and compiles and links the artifacts comprising the application, that is the executables (yes, the testcases as well), shared libs and plugins. At the end they are all located in build/bin.

Step c) moves all the necessary files (executable, shared libs, plugins, icons, templates, etc.) into the location of your KDE install. This is performed by running 'sudo make install/fast'.

To remove an installed version, I simply use this the following sequence in the build sub-directory:

  sudo -s
  xargs rm < install_manifest.txt
  exit

Having two sandboxes (one with master and one with 5.0) and can easily switch between the two of them. E.g. from stable to master:

  cd stable/build
  sudo -s
  xargs rm < install_manifest.txt
  exit
  cd ../../master/build
  sudo make install/fast

This will make sure that all the files are recent. Especially for plugins, step c) is very important. If you omit it, the debugger will use the newly compiled executable and shared objects from the build/bin directory, but not the plugins. It will use the old ones found installed. As Jack pointed out, not having the most recent plugin installed may be the cause to the problem you encounter.

BTW: KMyMoney tells you on the command line where it picks up the plugins during startup, e.g.

Located plugin "/usr/lib64/qt5/plugins/kmymoney/konlinetasks_sepa.so" Validity true
Located plugin "/usr/lib64/qt5/plugins/kmymoney/csvimporter.so" Validity true
.
.
Loading "/usr/lib64/qt5/plugins/kmymoney/budgetview.so"
Plugins: budgetview loaded
Loading "/usr/lib64/qt5/plugins/kmymoney/checkprinting.so"
Plugins: checkprinting loaded
.
.

Hope that helps.

Thomas


 
On Freitag, 27. Dezember 2019 01:42:38 CET Jack wrote:

> Hi JV,
> 
> I begin to wonder if the problem is that you are trying to debug a KMM 
> plugin.  It is easy enough to debug a newly compiled kmymoney file, but 
> KDE/QT has its own way of finding plugins.  As an experiment, after you 
> have run "make" find where the newly compiled plugins are.  For this 
> example assume you ran make in .../kmm/build and the compiled plugins 
> are in the lib dir below that.  Try running 
> 'QT_PLUGIN_PATH=.../kmm/build/lib" kdevelop'.
> 
> Note I'm doing this mostly from memory, so if it doesn't work, someone 
> will have to confirm whether some of my details are wrong.  I just don't 
> know if kdevelop accounts for that
> 
> On 12/26/19 11:46 AM, jvapr27 at gmail.com wrote:
> > Thanks Jack!
> >
> > This is what I see in the ccmake:
> >
> >   CMAKE_BUILD_TYPE                 Debugfull
> >   CMAKE_COLOR_MAKEFILE             ON
> >   CMAKE_CXX_COMPILER               /usr/bin/c++
> >   CMAKE_CXX_COMPILER_AR            /usr/bin/gcc-ar
> >   CMAKE_CXX_COMPILER_RANLIB        /usr/bin/gcc-ranlib
> >   CMAKE_CXX_FLAGS
> >   CMAKE_CXX_FLAGS_DEBUG            -g
> >   CMAKE_CXX_FLAGS_DEBUGFULL
> >   CMAKE_CXX_FLAGS_MINSIZEREL       -Os -DNDEBUG
> >   CMAKE_CXX_FLAGS_RELEASE          -O2 -DNDEBUG
> >   CMAKE_CXX_FLAGS_RELWITHDEBINFO   -O2 -g -DNDEBUG
> >   CMAKE_DLLTOOL                    CMAKE_DLLTOOL-NOTFOUND
> >   CMAKE_EXE_LINKER_FLAGS
> >   CMAKE_EXE_LINKER_FLAGS_DEBUG
> >   CMAKE_EXE_LINKER_FLAGS_DEBUGFU
> >   CMAKE_EXE_LINKER_FLAGS_MINSIZE
> >   CMAKE_EXE_LINKER_FLAGS_RELEASE
> >   CMAKE_EXE_LINKER_FLAGS_RELWITH
> >
> > I tried the new cmake line to see if that stops any optimization, but 
> > truly, I don't know where to do that. With what Jack said, I see those 
> > options in ccmake, but should I change anything? DEBUGFULL has nothing 
> > as a value. What I don't see is a CMAKE_C_FLAGS, not sure if that is 
> > missing or just not needed on my system.
> >
> >
> > It does seem that now the debuger Step-Over function in kdevelop works 
> > better. So maybe it worked. I need to test it more.
> >
> > Still, I notice weird things, like in this image below. I stepped over 
> > a boolean variable assignment, which sets it to true, but when I hover 
> > over it, it says its value is false. The debug cursor is past the 
> > point where the assignment was made. Why? Is this a kdevelop issue or 
> > maybe I just do not understand how this tool works yet. I thought the 
> > hover over would display the current value in the variable.
> >
> > Also, notice the qDebug() did not print on the application output. I 
> > did set up my application launcher in kdevelop, and debug launcher as 
> > Thomas showed in his screenshots. The only thing different was that I 
> > had an application target set, where he had an executeable. I updated 
> > mine to match his.
> >
> >
> >
> > If anyone has an more insights, please let me know.
> >
> > I appreciate the time and assistance.
> >
> > thanks,
> >
> > JV
> >
> >
> > On Thu, 2019-12-26 at 11:30 -0500, Jack wrote:
> >>
> >> Pending further response from Thomas, I think the debugfull is better 
> >> for your situation.  However, the actual control of optimization is 
> >> in flags to the compiler, usually set with CFLAGS or CXXFLAGS.  
> >> Optimization is -Ox where x is the level of optimization applied.  
> >> For example, my cmake line starts with 'CFLAGS="-O0 -ggdb" 
> >> CXXFLAGS=$CFLAGS cmake ....'  The -O0 (capital letter o, digit zero) 
> >> says no optimization at all. The -ggdb may not be necessary for you, 
> >> but at some point, helped me by explicitly providing some additional 
> >> debug information used by gdb.  I am not sure whether it makes any 
> >> difference if you are debugging with kdevelop.
> >>
> >> Jack
> >>
> >> On 12/26/19 11:12 AM, jvapr27 at gmail.com wrote:
> >>> Hi Thomas,
> >>>
> >>> Thanks for the response.
> >>>
> >>> Where can I check this?
> >>> > Did you build with optimization? Turn them off.
> >>>
> >>> My last cmake command was:
> >>> cmake .. -DCMAKE_INSTALL_PREFIX=/usr 
> >>> -DKDE_INSTALL_PLUGINDIR=/usr/lib64/qt5/plugins
> >>>
> >>> I will try the following:
> >>> cmake .. -DCMAKE_INSTALL_PREFIX=/usr 
> >>> -DKDE_INSTALL_PLUGINDIR=/usr/lib64/qt5/plugins
> >>> -DCMAKE_BUILD_TYPE=Debugfull
> >>>
> >>> In case this is the problem, do you know what this is for then?
> >>>
> >>> The default value is: 'RelWithDebInfo'
> >>>
> >>> I read that as Release-with-Debug-and-Info. Is this still optimizing 
> >>> for release?
> >>>
> >>> thanks,
> >>>
> >>> JV
> >>>
> >>>
> >>>
> >>>
> >>> On Thu, 2019-12-26 at 11:59 +0100, Thomas Baumgart wrote:
> >>>> Jesus,
> >>>>
> >>>> On Donnerstag, 26. Dezember 2019 08:54:38 CET jvapr27 at gmail.com 
> >>>> <mailto:jvapr27 at gmail.com> wrote:
> >>>>
> >>>>> Everyone... in case you have run into this before.
> >>>>>
> >>>>> I cannot seem to get Kdevelop to work correctly.
> >>>>>
> >>>>> Problems:
> >>>>> - I set breakpoints but the breakpoint is set a few lines off.
> >>>>> - When running in Debug mode, I am watching a variable named
> >>>>> invertedValue which I hard coded to = true; and still the variable 
> >>>>> does
> >>>>> not set to true, as if it is not debugging the code I see in the IDE.
> >>>>
> >>>> Did you build with optimization? Turn them off. Optimization causes 
> >>>> all kinds of weird looking side effects when debugging.
> >>>>
> >>>>> - I set qDebug() and qInfo() methods but they did not show anything in
> >>>>> the output view. Where should this show up? Anything I can 
> >>>>> configure in
> >>>>> the Kdevelop to get it to work?
> >>>>
> >>>> Shows up in the Debug view. See attached screenshot: shows an 
> >>>> active breakpoint in the source code and the output in the Debug view.
> >>>>
> >>>>> Any help would be greatly appreciated.
> >>>>
> >>>> Also attached how I configured the launches in KDevelop
> >>>>> @Thomas, I am focusing on the Cashflow report.
> >>>>>
> >>>>> thanks,
> >>>>>
> >>>>> JV
> >>>>>
> >>>>> On Sun, 2019-12-22 at 08:51 +0100, Thomas Baumgart wrote:
> >>>>>> Jesus,
> >>>>>>
> >>>>>> On Samstag, 21. Dezember 2019 18:28:05 CET Jesus Varela wrote:
> >>>>>>
> >>>>>>> Dev team,
> >>>>>>>
> >>>>>>> I am trying to become more familiar with the code and am looking
> >>>>>>> for the
> >>>>>>> code that would control whether transfers are graphed and displayed
> >>>>>>> as
> >>>>>>> negative numbers in the reports. I want to display absolute values
> >>>>>>> on
> >>>>>>> charts and tables.
> >>>>>>
> >>>>>> Not sure which report you want to modify, but there is e.g. a method
> >>>>>> called
> >>>>>> PivotTable::coloredAmount(). It is responsible to render the color
> >>>>>> for HTML
> >>>>>> reports. The callee of this method provides the value.
> >>>>>>
> >>>>>>> I figured I would use this personal desire to get acquainted with
> >>>>>>> the code.
> >>>>>>> Any hints would be appreciated. I found the kreportchartview.cpp
> >>>>>>> and in
> >>>>>>> there is a variable to figure out if expenses should be negative or
> >>>>>>> not,
> >>>>>>> but I do not see anything for transfers. If it is there, I will
> >>>>>>> keep
> >>>>>>> looking. If I am on the wrong file, please let me know if you know
> >>>>>>> where I
> >>>>>>> should be looking.
> >>>>>>
> >>>>>> KReportChartView::drawPivotChart receives all values in the parameter
> >>>>>> 'grid'.
> >>>>>> You may want to look into the construction of the grid to find the
> >>>>>> spot where
> >>>>>> the values of the transfers are inserted.
> >>>>>>
> >>>>>> The spot you found is not negating the value of each expense, but
> >>>>>> simply
> >>>>>> negates the value contained in the grid if the underlying account for
> >>>>>> the cell
> >>>>>> is an expense account. So I wonder if that would be the spot to
> >>>>>> achieve what
> >>>>>> you are trying.
> >>>>>>
> >>>>>>> Just trying to make sure I am understanding the structure. I
> >>>>>>> haven't used
> >>>>>>> c++ in a long time.
> >>>>>>>
> >>>>>>> Thanks in advance for any assistance.
> >>>>>>
> >>>>>> Hope that helps. The reporting section is not my area of expertise.
> >>>>>>
> >>>>>>
> 

-- 

Regards

Thomas Baumgart

https://www.signal.org/       Signal, the better WhatsApp
-------------------------------------------------------------
What does “IDK” stand for? I don’t know.
-------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 868 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20191227/ee3126f9/attachment.sig>


More information about the KMyMoney-devel mailing list