| Thread overview | |||||||
|---|---|---|---|---|---|---|---|
|
January 19, 2018 [VisualD] Fully rebuilding a project after a smallest change in one file | ||||
|---|---|---|---|---|
| ||||
Hi,
When using VisualD in 'Visual C/C++ integration mode' my project rebuilds everything every time I make the smallest change in one file.
In the simplest case:
// file 'foo.d'
module foo;
class Foo
{
void FooFunc()
{
}
}
//file 'main.d'
import foo;
int main()
{
auto f = new Foo();
f.FooFunc();
return 0;
}
Both files are added to a simplest Visual C/C++ project (vcxproj) and compiling with DMD. The project is setup to compile 'One object file per source file' (far from optimal but necessary in my use case).
If I modify only main.d, both foo.d and main.d will be recompiled.
Expected behaviour would be: only main.d is recompiled (since foo.d does not depend on main.d).
I'm using VS2015 + VisualD 0.45.1.
Is this a known problem or I have some kind of problem in my setup?
Thanks!
| ||||
January 20, 2018 Re: [VisualD] Fully rebuilding a project after a smallest change in one file | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Rogi |
On 19.01.2018 16:04, Rogi wrote:
> Hi,
>
> When using VisualD in 'Visual C/C++ integration mode' my project rebuilds everything every time I make the smallest change in one file.
>
> In the simplest case:
>
> // file 'foo.d'
> module foo;
> class Foo
> {
> void FooFunc()
> {
> }
> }
>
> //file 'main.d'
> import foo;
> int main()
> {
> auto f = new Foo();
> f.FooFunc();
> return 0;
> }
>
> Both files are added to a simplest Visual C/C++ project (vcxproj) and compiling with DMD. The project is setup to compile 'One object file per source file' (far from optimal but necessary in my use case).
> If I modify only main.d, both foo.d and main.d will be recompiled.
> Expected behaviour would be: only main.d is recompiled (since foo.d does not depend on main.d).
>
> I'm using VS2015 + VisualD 0.45.1.
>
> Is this a known problem or I have some kind of problem in my setup?
>
> Thanks!
I can reproduce it. According to the build log the build task thinks that the command line as changed. Will have to investigate more...
| |||
January 22, 2018 Re: [VisualD] Fully rebuilding a project after a smallest change in one file | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Rainer Schuetze | On Saturday, 20 January 2018 at 21:53:39 UTC, Rainer Schuetze wrote:
>
>
> On 19.01.2018 16:04, Rogi wrote:
>> [...]
>
> I can reproduce it. According to the build log the build task thinks that the command line as changed. Will have to investigate more...
Thanks for answering!
You gave me a hint where to start looking and I can propose you a patch which fixes the issue. I can prepare a pull request for it if you are interested.
| |||
January 23, 2018 Re: [VisualD] Fully rebuilding a project after a smallest change in one file | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Rogi | On 22.01.2018 18:39, Rogi wrote: > On Saturday, 20 January 2018 at 21:53:39 UTC, Rainer Schuetze wrote: >> >> >> On 19.01.2018 16:04, Rogi wrote: >>> [...] >> >> I can reproduce it. According to the build log the build task thinks that the command line as changed. Will have to investigate more... > > Thanks for answering! > You gave me a hint where to start looking and I can propose you a patch which fixes the issue. I can prepare a pull request for it if you are interested. Please do. I had a quick look, but didn't yet had time to drill deeper, so a patch is very welcome. My guess is that there is some format mismatch in GenerateCommandLineCommands: https://github.com/dlang/visuald/blob/master/msbuild/dbuild/CompileD.cs#L391 | |||
January 23, 2018 Re: [VisualD] Fully rebuilding a project after a smallest change in one file | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Rainer Schuetze | On Tuesday, 23 January 2018 at 07:00:40 UTC, Rainer Schuetze wrote: > > > On 22.01.2018 18:39, Rogi wrote: >> On Saturday, 20 January 2018 at 21:53:39 UTC, Rainer Schuetze wrote: >>> >>> >>> On 19.01.2018 16:04, Rogi wrote: >>>> [...] >>> >>> I can reproduce it. According to the build log the build task thinks that the command line as changed. Will have to investigate more... >> >> Thanks for answering! >> You gave me a hint where to start looking and I can propose you a patch which fixes the issue. I can prepare a pull request for it if you are interested. > > Please do. I had a quick look, but didn't yet had time to drill deeper, so a patch is very welcome. > > My guess is that there is some format mismatch in GenerateCommandLineCommands: https://github.com/dlang/visuald/blob/master/msbuild/dbuild/CompileD.cs#L391 Exactly. Actually GenerateCommandLineCommands is not even called by the code which generates the list of sources out-of-date because of command line change, so it compares the previous command line with 'nothing'! I submitted a pull request: https://github.com/dlang/visuald/pull/86 | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply