Re: [Audacity-devel] local build problem on Windows
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Paul L. <pau...@gm...> - 2021-05-12 16:33:37
|
I wrote a more general fix than Leland's that should be good on all platforms. I have confirmed it fixes the Mac build with precompiled headers on. Leland, please review and merge it. https://github.com/audacity/audacity/pull/886 PRL On Wed, May 12, 2021 at 9:38 AM Paul Licameli <pau...@gm...> wrote: > Mac needs fixing too. > > I will figure it out and push. > > PRL > > > On Wed, May 12, 2021 at 9:32 AM James Crook <jam...@gm...> > wrote: > >> Thanks for the quick confirmation of a fix. >> >> On Wed, 12 May 2021 at 13:18, David Bailes <drb...@gm...> wrote: >> >>> On Tue, 11 May 2021 at 21:02, Leland <ll...@ho...> wrote: >>> >>>> Patch is attached. I don’t feel like hassling with a pull request just >>>> for this…times are a changing. 😊 >>>> >>> >>> thanks, I can confirm that this fixes the problem on Windows, >>> David. >>> >>> >>>> >>>> >>>> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt >>>> >>>> index 3ff5911fb..e3443ce81 100644 >>>> >>>> --- a/src/CMakeLists.txt >>>> >>>> +++ b/src/CMakeLists.txt >>>> >>>> @@ -1316,7 +1316,15 @@ if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.16" >>>> AND NOT CCACHE_PROGRAM ) >>>> >>>> >>>> >>>> if( ${_OPT}use_pch ) >>>> >>>> message( STATUS "Using precompiled headers" ) >>>> >>>> - target_precompile_headers( ${TARGET} PRIVATE AudacityHeaders.h ) >>>> >>>> + target_precompile_headers( ${TARGET} >>>> >>>> + PRIVATE >>>> >>>> + # The way CMake generates the project file on Windows, the >>>> normal >>>> >>>> + # "force include" of configwin.h will happen AFTER >>>> AudacityHeaders.h >>>> >>>> + # is included. So, anything depending on the configwin.h >>>> variables >>>> >>>> + # will not be properly defined. >>>> >>>> + >>>> $<$<CXX_COMPILER_ID:MSVC>:"${CMAKE_BINARY_DIR}/src/private/configwin.h"> >>>> >>>> + AudacityHeaders.h >>>> >>>> + ) >>>> >>>> else() >>>> >>>> message( STATUS "Not using precompiled headers" ) >>>> >>>> endif() >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> *From:* Leland <ll...@ho...> >>>> *Sent:* Tuesday, May 11, 2021 1:12 PM >>>> *To:* aud...@li... >>>> *Subject:* Re: [Audacity-devel] local build problem on Windows >>>> >>>> >>>> >>>> Honestly, I don’t know what’s going on. It builds if I configure with: >>>> >>>> >>>> >>>> cmake -Daudacity_use_pch=no >>>> >>>> >>>> >>>> It doesn’t build if I configure with: >>>> >>>> >>>> >>>> cmake -Daudacity_use_pch=yes >>>> >>>> >>>> >>>> I thought I understood why, but every “workaround” I’ve tried so far >>>> has failed…grrrrrr >>>> >>>> >>>> >>>> *From:* Leland <ll...@ho...> >>>> *Sent:* Tuesday, May 11, 2021 1:02 PM >>>> *To:* aud...@li... >>>> *Subject:* Re: [Audacity-devel] local build problem on Windows >>>> >>>> >>>> >>>> Hold off…this may be incorrect. Still digging. >>>> >>>> >>>> >>>> *From:* Leland <ll...@ho...> >>>> *Sent:* Tuesday, May 11, 2021 12:44 PM >>>> *To:* aud...@li... >>>> *Subject:* Re: [Audacity-devel] local build problem on Windows >>>> >>>> >>>> >>>> Paul, the problem is that using “/FI” to force include configwin.h >>>> overrides the method used by CMake to include the precompiled headers. I’m >>>> trying to devise some sort of workaround, but I don’t think it’s gonna be >>>> pretty. >>>> >>>> >>>> >>>> *From:* Leland <ll...@ho...> >>>> *Sent:* Tuesday, May 11, 2021 11:35 AM >>>> *To:* aud...@li... >>>> *Subject:* Re: [Audacity-devel] local build problem on Windows >>>> >>>> >>>> >>>> Yea, it broke the use of precompiled headers on Windows. Looking into >>>> it… >>>> >>>> >>>> >>>> *From:* David Bailes <drb...@gm...> >>>> *Sent:* Tuesday, May 11, 2021 3:50 AM >>>> *To:* Audacity Development <aud...@li...> >>>> *Subject:* [Audacity-devel] local build problem on Windows >>>> >>>> >>>> >>>> Problems with my local build, using VS 2019, and using VS's cmake, as >>>> in the build instructions in win/build.txt. >>>> >>>> Starting with the recent >>>> commit: 794f4e5877195e28afb230f2cdff166410fd5e37, >>>> >>>> I'm getting the build errors shown below, >>>> >>>> David. >>>> >>>> >>>> >>>> cmake_pch.cxx >>>> U:\audacity\src\AudioIO.h(95,24): error C3646: 'midiTracks': unknown >>>> override specifier >>>> U:\audacity\src\AudioIO.h(95,34): error C4430: missing type specifier - >>>> int assumed. Note: C++ does not support default-int >>>> U:\audacity\src\AudioIO.h(270,16): error C3646: 'MidiTime': unknown >>>> override specifier >>>> U:\audacity\src\AudioIO.h(270,24): error C2059: syntax error: '(' >>>> U:\audacity\src\AudioIO.h(270,26): error C2238: unexpected token(s) >>>> preceding ';' >>>> U:\audacity\src\AudioIO.h(368,20): error C2143: syntax error: missing >>>> ';' before '*' >>>> U:\audacity\src\AudioIO.h(368,20): error C4430: missing type specifier >>>> - int assumed. Note: C++ does not support default-int >>>> U:\audacity\src\AudioIO.h(368,32): error C2238: unexpected token(s) >>>> preceding ';' >>>> U:\audacity\src\AudioIO.h(392,16): error C3646: 'mMaxMidiTimestamp': >>>> unknown override specifier >>>> U:\audacity\src\AudioIO.h(392,33): error C4430: missing type specifier >>>> - int assumed. Note: C++ does not support default-int >>>> U:\audacity\src\AudioIO.h(415,17): error C2143: syntax error: missing >>>> ';' before '*' >>>> U:\audacity\src\AudioIO.h(415,17): error C4430: missing type specifier >>>> - int assumed. Note: C++ does not support default-int >>>> U:\audacity\src\AudioIO.h(415,22): error C2238: unexpected token(s) >>>> preceding ';' >>>> U:\audacity\src\AudioIO.h(416,20): error C2065: 'Alg_iterator': >>>> undeclared identifier >>>> U:\audacity\src\AudioIO.h(416,9): error C2923: 'std::unique_ptr': >>>> 'Alg_iterator' is not a valid template type argument for parameter '_Ty' >>>> U:\audacity\src\AudioIO.h(416,9): error C2976: 'std::unique_ptr': too >>>> few template arguments >>>> C:\Program Files (x86)\Microsoft Visual >>>> Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include\memory(3319): >>>> message : see declaration of 'std::unique_ptr' >>>> [U:\audacity\out\build\x86-Debug\src\Audacity.vcxproj] >>>> U:\audacity\src\AudioIO.h(418,17): error C2143: syntax error: missing >>>> ';' before '*' >>>> U:\audacity\src\AudioIO.h(418,17): error C4430: missing type specifier >>>> - int assumed. Note: C++ does not support default-int >>>> U:\audacity\src\AudioIO.h(418,28): error C2238: unexpected token(s) >>>> preceding ';' >>>> U:\audacity\src\AudioIO.h(428,21): error C2143: syntax error: missing >>>> ';' before '*' >>>> U:\audacity\src\AudioIO.h(428,21): error C4430: missing type specifier >>>> - int assumed. Note: C++ does not support default-int >>>> U:\audacity\src\AudioIO.h(428,37): error C2238: unexpected token(s) >>>> preceding ';' >>>> U:\audacity\src\AudioIO.h(434,24): error C3646: 'mMidiPlaybackTracks': >>>> unknown override specifier >>>> U:\audacity\src\AudioIO.h(434,43): error C4430: missing type specifier >>>> - int assumed. Note: C++ does not support default-int >>>> >>>> Build All failed. >>>> _______________________________________________ >>>> audacity-devel mailing list >>>> aud...@li... >>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel >>>> >>> _______________________________________________ >>> audacity-devel mailing list >>> aud...@li... >>> https://lists.sourceforge.net/lists/listinfo/audacity-devel >>> >> _______________________________________________ >> audacity-devel mailing list >> aud...@li... >> https://lists.sourceforge.net/lists/listinfo/audacity-devel >> > |