Re: local build problem on Windows

Paul Licameli <[email protected]> Wed, 12 May 2021 12:33:09 -0400
Newsgroups gmane.comp.audio.audacity.devel
Message-ID <CAKUg33oD7GYQUYQjKH7C9cY_by=JnzCkqhZu=TeiZSud6DkSLQ@mail.gmail.com>
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 <[email protected]>
wrote:

> Mac needs fixing too.
>
> I will figure it out and push.
>
> PRL
>
>
> On Wed, May 12, 2021 at 9:32 AM James Crook <[email protected]>
> wrote:
>
>> Thanks for the quick confirmation of a fix.
>>
>> On Wed, 12 May 2021 at 13:18, David Bailes <[email protected]> wrote:
>>
>>> On Tue, 11 May 2021 at 21:02, Leland <[email protected]> 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 <[email protected]>
>>>> *Sent:* Tuesday, May 11, 2021 1:12 PM
>>>> *To:* [email protected]
>>>> *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 <[email protected]>
>>>> *Sent:* Tuesday, May 11, 2021 1:02 PM
>>>> *To:* [email protected]
>>>> *Subject:* Re: [Audacity-devel] local build problem on Windows
>>>>
>>>>
>>>>
>>>> Hold off…this may be incorrect.  Still digging.
>>>>
>>>>
>>>>
>>>> *From:* Leland <[email protected]>
>>>> *Sent:* Tuesday, May 11, 2021 12:44 PM
>>>> *To:* [email protected]
>>>> *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 <[email protected]>
>>>> *Sent:* Tuesday, May 11, 2021 11:35 AM
>>>> *To:* [email protected]
>>>> *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 <[email protected]>
>>>> *Sent:* Tuesday, May 11, 2021 3:50 AM
>>>> *To:* Audacity Development <[email protected]>
>>>> *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
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>>>
>>> _______________________________________________
>>> audacity-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>>
>> _______________________________________________
>> audacity-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/audacity-devel
>>
>

_______________________________________________
audacity-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-devel