[Csnd-dev] VS Build
Date | 2017-10-11 15:44 |
From | Steven Yi |
Subject | [Csnd-dev] VS Build |
Hi All, I thought I'd start a separate thread for the Windows (Visual Studio) build and what needs to happen to get that solidified. So far, I tried switching over to it here and here are some notes: 1. I first tried using my RelWithDebInfo build and it seemed to work okay with Blue. 2. I switched to my Release build and I got different errors. I only got so far as to try out one file and got the "Use of i() with expression not permitted on line %d\n" error. 3. I saw at the Csound Conference workshop that Blue crashed with the Appveyor build. However, testing here with my local build, I did not get crashes. 4. I found I can build parallel builds using the "/m" flag. (In my case, I ran "cmake --build . --target install -- /m:6" in my csound/mvsc/csound-vs folder). Any reasons we are not using /m in the build.bat file? 5. The install target does not seem to copy dependencies (i.e., portaudio, etc.) 6. The csdtests target does not work. (test.py needs to be updated, perhaps to take in an executable folder or something along those lines as the assumptions in the file work for MinGW but not for VS). I think it's critical we get this going. |
Date | 2017-10-11 20:21 |
From | Stephen Kyne |
Subject | Re: [Csnd-dev] VS Build |
Hey Steven,
1+2. That's a bit odd, there really should be no difference between Debug/Release/RelWithDebInfo. Cmake generates the same (suitable) compiler flags across all those build profiles. Unless in our CMake files we're manually adding some things based on build
type. I haven't tested with RelWithDebInfo much though having said that.
3. I don't think the Appveyor build has undergone much, if any, hard testing. All my tests were based on csound.exe with trapped.csd essentially. I know from testing CsoundQt locally that it's not stable and is flat out broken (recording doesn't work, instant
crash).
4. That command is for gcc/clang. MSVC is "/MP4". This could be added to the build scripts alright. It might speed it up a little bit but MSVC linker is single threaded so won't work miracles.
https://docs.microsoft.com/en-ie/cpp/build/reference/mp-build-with-multiple-processes
5. This is a problem with VCPKG. I was going to add a dummy target that would end up copying the dependencies to the output dir but it's not a clean solution. Michael had done this manually in the packaging I think.
6. Yeah this is something we should get working and integrated into the build process. I didn't fully investigate why this wasn't working. The unit tests relying on CUnit also need attention.
I think it might be a good idea to create tickets for all the remaining work. Perhaps we need to blitz through some testing and see what isn't functioning as we;;. Anything failing needs a ticket opened and targeted for 6.10 or 7.
Stephen
From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Steven Yi <stevenyi@GMAIL.COM>
Sent: 11 October 2017 15:44 To: CSOUND-DEV@LISTSERV.HEANET.IE Subject: [Csnd-dev] VS Build Hi All,
I thought I'd start a separate thread for the Windows (Visual Studio) build and what needs to happen to get that solidified. So far, I tried switching over to it here and here are some notes: 1. I first tried using my RelWithDebInfo build and it seemed to work okay with Blue. 2. I switched to my Release build and I got different errors. I only got so far as to try out one file and got the "Use of i() with expression not permitted on line %d\n" error. 3. I saw at the Csound Conference workshop that Blue crashed with the Appveyor build. However, testing here with my local build, I did not get crashes. 4. I found I can build parallel builds using the "/m" flag. (In my case, I ran "cmake --build . --target install -- /m:6" in my csound/mvsc/csound-vs folder). Any reasons we are not using /m in the build.bat file? 5. The install target does not seem to copy dependencies (i.e., portaudio, etc.) 6. The csdtests target does not work. (test.py needs to be updated, perhaps to take in an executable folder or something along those lines as the assumptions in the file work for MinGW but not for VS). I think it's critical we get this going. steven |
Date | 2017-10-11 20:34 |
From | Steven Yi |
Subject | Re: [Csnd-dev] VS Build |
/m:6 worked for me as cmake was calling msbuild as far as I could see (https://msdn.microsoft.com/en-us/library/ms164311.aspx). (I use -j 6 when building with make and gcc/clang on other platforms) I think the thing I'd like to figure out is how to enable the parallel build when I'm compiling within Visual Studio itself. Tickets sound good for rest of the issues. On Wed, Oct 11, 2017 at 3:21 PM, Stephen Kyne |
Date | 2017-10-11 23:57 |
From | Michael Gogins |
Subject | Re: [Csnd-dev] VS Build |
CsoundQt from AppVeyor works for me for plain CSDs and for HTML pieces. I didn't try recording or MIDI input. Yes, the installer script copies dependencies. I think that will work better in the long run actually. Regards, Mike ----------------------------------------------------- Michael Gogins Irreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Wed, Oct 11, 2017 at 3:34 PM, Steven Yi |
Date | 2017-10-12 00:08 |
From | Steven Yi |
Subject | Re: [Csnd-dev] VS Build |
I'd still like a solution that copies the dependencies for the install target from CMake, as that'd work better for me for development and testing. On Wed, Oct 11, 2017 at 6:57 PM, Michael Gogins |
Date | 2017-10-12 00:11 |
From | Michael Gogins |
Subject | Re: [Csnd-dev] VS Build |
I am skeptical that CMake would identify all dependencies. How does it do that? I assume you're only talking about shared library dependencies. Best, Mike ----------------------------------------------------- Michael Gogins Irreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Wed, Oct 11, 2017 at 7:08 PM, Steven Yi |
Date | 2017-10-13 19:18 |
From | Stephen Kyne |
Subject | Re: [Csnd-dev] VS Build |
It's not CMake that would copy the dependencies. VCPKG can uses dumpbin.exe to see what dependencies are required for each dll/exe and then copies them to the output dir. This script is run for all MSVC project builds then.
The trouble is, it doesn't work for a plugin type systems such as csound which dynamically load via loadlibrary.
I was going to setup a dummy executable in Cmake that would depend on all csound dependencies, VCPKG would then copy them to the output folder on building it. We can just delete the dummy exe after.
I think this is the best short term solution which even the VCPKG guys recommended until they add that functionality.
Stephen
From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Michael Gogins <michael.gogins@GMAIL.COM>
Sent: 12 October 2017 00:11 To: CSOUND-DEV@LISTSERV.HEANET.IE Subject: Re: [Csnd-dev] VS Build I am skeptical that CMake would identify all dependencies. How does it do that?
I assume you're only talking about shared library dependencies. Best, Mike ----------------------------------------------------- Michael Gogins Irreducible Productions http://michaelgogins.tumblr.com Michael dot Gogins at gmail dot com On Wed, Oct 11, 2017 at 7:08 PM, Steven Yi <stevenyi@gmail.com> wrote: > I'd still like a solution that copies the dependencies for the install > target from CMake, as that'd work better for me for development and > testing. > > On Wed, Oct 11, 2017 at 6:57 PM, Michael Gogins > <michael.gogins@gmail.com> wrote: >> CsoundQt from AppVeyor works for me for plain CSDs and for HTML >> pieces. I didn't try recording or MIDI input. >> >> Yes, the installer script copies dependencies. I think that will work >> better in the long run actually. >> >> Regards, >> Mike >> >> ----------------------------------------------------- >> Michael Gogins >> Irreducible Productions >> http://michaelgogins.tumblr.com >> Michael dot Gogins at gmail dot com >> >> >> On Wed, Oct 11, 2017 at 3:34 PM, Steven Yi <stevenyi@gmail.com> wrote: >>> /m:6 worked for me as cmake was calling msbuild as far as I could see >>> (https://msdn.microsoft.com/en-us/library/ms164311.aspx). (I use -j 6 >>> when building with make and gcc/clang on other platforms) I think the >>> thing I'd like to figure out is how to enable the parallel build when >>> I'm compiling within Visual Studio itself. >>> >>> Tickets sound good for rest of the issues. >>> >>> >>> >>> On Wed, Oct 11, 2017 at 3:21 PM, Stephen Kyne <stevek@outlook.ie> wrote: >>>> Hey Steven, >>>> >>>> 1+2. That's a bit odd, there really should be no difference between >>>> Debug/Release/RelWithDebInfo. Cmake generates the same (suitable) compiler >>>> flags across all those build profiles. Unless in our CMake files we're >>>> manually adding some things based on build type. I haven't tested with >>>> RelWithDebInfo much though having said that. >>>> >>>> 3. I don't think the Appveyor build has undergone much, if any, hard >>>> testing. All my tests were based on csound.exe with trapped.csd essentially. >>>> I know from testing CsoundQt locally that it's not stable and is flat out >>>> broken (recording doesn't work, instant crash). >>>> >>>> 4. That command is for gcc/clang. MSVC is "/MP4". This could be added to the >>>> build scripts alright. It might speed it up a little bit but MSVC linker is >>>> single threaded so won't work miracles. >>>> https://docs.microsoft.com/en-ie/cpp/build/reference/mp-build-with-multiple-processes >>>> >>>> 5. This is a problem with VCPKG. I was going to add a dummy target that >>>> would end up copying the dependencies to the output dir but it's not a clean >>>> solution. Michael had done this manually in the packaging I think. >>>> >>>> 6. Yeah this is something we should get working and integrated into the >>>> build process. I didn't fully investigate why this wasn't working. The unit >>>> tests relying on CUnit also need attention. >>>> >>>> I think it might be a good idea to create tickets for all the remaining >>>> work. Perhaps we need to blitz through some testing and see what isn't >>>> functioning as we;;. Anything failing needs a ticket opened and targeted for >>>> 6.10 or 7. >>>> >>>> Stephen >>>> ________________________________ >>>> From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Steven >>>> Yi <stevenyi@GMAIL.COM> >>>> Sent: 11 October 2017 15:44 >>>> To: CSOUND-DEV@LISTSERV.HEANET.IE >>>> Subject: [Csnd-dev] VS Build >>>> >>>> Hi All, >>>> >>>> I thought I'd start a separate thread for the Windows (Visual Studio) >>>> build and what needs to happen to get that solidified. >>>> >>>> So far, I tried switching over to it here and here are some notes: >>>> >>>> 1. I first tried using my RelWithDebInfo build and it seemed to work >>>> okay with Blue. >>>> >>>> 2. I switched to my Release build and I got different errors. I only >>>> got so far as to try out one file and got the "Use of i() with >>>> expression not permitted on line %d\n" error. >>>> >>>> 3. I saw at the Csound Conference workshop that Blue crashed with the >>>> Appveyor build. However, testing here with my local build, I did not >>>> get crashes. >>>> >>>> 4. I found I can build parallel builds using the "/m" flag. (In my >>>> case, I ran "cmake --build . --target install -- /m:6" in my >>>> csound/mvsc/csound-vs folder). Any reasons we are not using /m in the >>>> build.bat file? >>>> >>>> 5. The install target does not seem to copy dependencies (i.e., portaudio, >>>> etc.) >>>> >>>> 6. The csdtests target does not work. (test.py needs to be updated, >>>> perhaps to take in an executable folder or something along those lines >>>> as the assumptions in the file work for MinGW but not for VS). I think >>>> it's critical we get this going. >>>> >>>> steven |