Skip to content

Commit ef902a8

Browse files
authored
fixed #13823 - release-windows.yml: build with Boost [skip ci] (#7897)
1 parent ba32fd2 commit ef902a8

File tree

7 files changed

+46
-21
lines changed

7 files changed

+46
-21
lines changed

.github/workflows/release-windows.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828
# see https://www.pcre.org/original/changelog.txt
2929
PCRE_VERSION: 8.45
3030
QT_VERSION: 6.10.0
31+
BOOST_MINOR_VERSION: 89
3132

3233
steps:
3334
- uses: actions/checkout@v4
@@ -52,6 +53,16 @@ jobs:
5253
copy pcre.h ..\externals || exit /b !errorlevel!
5354
copy Release\pcre.lib ..\externals\pcre64.lib || exit /b !errorlevel!
5455
56+
- name: Download Boost
57+
run: |
58+
curl -fsSL https://archives.boost.io/release/1.%BOOST_MINOR_VERSION%.0/source/boost_1_%BOOST_MINOR_VERSION%_0.7z -o boost.zip || exit /b !errorlevel!
59+
60+
- name: Install Boost
61+
run: |
62+
@echo on
63+
7z x boost.zip boost_1_%BOOST_MINOR_VERSION%_0/boost || exit /b !errorlevel!
64+
ren boost_1_%BOOST_MINOR_VERSION%_0 boost || exit /b !errorlevel!
65+
5566
# available modules: https://github.com/miurahr/aqtinstall/blob/master/docs/getting_started.rst#installing-modules
5667
# available tools: https://github.com/miurahr/aqtinstall/blob/master/docs/getting_started.rst#installing-tools
5768
- name: Install Qt ${{ env.QT_VERSION }}
@@ -68,7 +79,7 @@ jobs:
6879
run: |
6980
:: TODO: enable rules?
7081
:: specify Release build so matchcompiler is used
71-
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On -DCMAKE_COMPILE_WARNING_AS_ERROR=On || exit /b !errorlevel!
82+
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_ONLINE_HELP=On -DUSE_BOOST=ON -DBOOST_INCLUDEDIR=%GITHUB_WORKSPACE%\boost -DCMAKE_COMPILE_WARNING_AS_ERROR=On || exit /b !errorlevel!
7283
cmake --build build --target cppcheck-gui --config Release || exit /b !errorlevel!
7384
7485
# TODO: package PDBs
@@ -87,9 +98,10 @@ jobs:
8798
run: python tools\matchcompiler.py --write-dir lib || exit /b !errorlevel!
8899

89100
# TODO: build with multiple threads
90-
# TODO: build with boost enabled
91101
- name: Build CLI x64 release configuration using MSBuild
92-
run: msbuild -m cppcheck.sln -t:cli -p:Configuration=Release-PCRE -p:Platform=x64 || exit /b !errorlevel!
102+
run: msbuild -m cppcheck.sln -t:cli -p:Configuration=Release-PCRE -p:Platform=x64 -p:HaveBoost=HAVE_BOOST -p:BoostInclude=%GITHUB_WORKSPACE%\boost || exit /b !errorlevel!
103+
env:
104+
_CL_: /WX
93105

94106
- uses: actions/upload-artifact@v4
95107
with:

TUNING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ Boost.Container (https://www.boost.org/doc/libs/release/libs/container) is being
2828

2929
As the used library is header-only implementation you only need to install the package on the system you build the binary on but not on the system you run the analysis on.
3030

31-
The official Windows binary is currently not using this - see https://trac.cppcheck.net/ticket/13823 for details.
31+
The official Windows binary is always using this.
3232

3333
This will be used by default if Boost is detected in CMake. If you want to enforce the usage, you can use the CMake option `-DUSE_BOOST=On` which will cause the build to fail if no Boost was detected.
3434

3535
Using Visual Studio you need to provide a full Boost release (i.e. including binaries) for it to be detected by CMake. If you are not able to do this you can specify the CMake option `-DBOOST_INCLUDEDIR=<in>` (pointing to the directory which *contains* the `boost` include directory) to work around this (this is a Cppcheck specific hack) - see https://trac.cppcheck.net/ticket/13822 for more details.
3636

3737
If you are using `make` instead you need to specify `-DHAVE_BOOST` in the flags.
3838

39-
(TODO: document how to use with provided Visual Studio project)
39+
If you are using the Visual Studio project you need to specify the properties `HaveBoost` (always needs to be set to `HAVE_BOOST`) and `BoostInclude` (set to the Boost folder). On the command-line you would need to add `-p:HaveBoost=HAVE_BOOST -p:BoostInclude=<boostdir>`.
4040

4141
### Use A Different Compiler
4242

lib/cppcheck.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,9 @@
258258
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
259259
<MultiProcessorCompilation>true</MultiProcessorCompilation>
260260
<Optimization>Disabled</Optimization>
261-
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
261+
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;$(HaveBoost);WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
262262
<WarningLevel>Level4</WarningLevel>
263-
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
263+
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
264264
<DisableSpecificWarnings>4018;4127;4146;4244;4251;4267;4389;4701;4706;4800;4805</DisableSpecificWarnings>
265265
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
266266
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -292,9 +292,9 @@ if exist "$(OutDir)platforms\unix64-unsigned.xml" del /q "$(OutDir)platforms\uni
292292
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
293293
<MultiProcessorCompilation>true</MultiProcessorCompilation>
294294
<Optimization>Disabled</Optimization>
295-
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
295+
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;$(HaveBoost);WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
296296
<WarningLevel>Level4</WarningLevel>
297-
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
297+
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
298298
<DisableSpecificWarnings>4018;4127;4146;4244;4251;4267;4389;4701;4706;4800;4805</DisableSpecificWarnings>
299299
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
300300
<PrecompiledHeader>Use</PrecompiledHeader>
@@ -332,9 +332,9 @@ if exist "$(OutDir)platforms\unix64-unsigned.xml" del /q "$(OutDir)platforms\uni
332332
<OmitFramePointers>true</OmitFramePointers>
333333
<StringPooling>true</StringPooling>
334334
<FunctionLevelLinking>true</FunctionLevelLinking>
335-
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
335+
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
336336
<DisableSpecificWarnings>4018;4127;4146;4244;4251;4267;4389;4701;4706;4800;4805</DisableSpecificWarnings>
337-
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
337+
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;$(HaveBoost);NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
338338
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
339339
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
340340
<MultiProcessorCompilation>true</MultiProcessorCompilation>
@@ -375,9 +375,9 @@ if exist "$(OutDir)platforms\unix64-unsigned.xml" del /q "$(OutDir)platforms\uni
375375
<OmitFramePointers>true</OmitFramePointers>
376376
<StringPooling>true</StringPooling>
377377
<FunctionLevelLinking>true</FunctionLevelLinking>
378-
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
378+
<AdditionalIncludeDirectories>..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
379379
<DisableSpecificWarnings>4018;4127;4146;4244;4251;4267;4389;4701;4706;4800;4805</DisableSpecificWarnings>
380-
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;NDEBUG;WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
380+
<PreprocessorDefinitions>CPPCHECKLIB_EXPORT;TINYXML2_EXPORT;SIMPLECPP_EXPORT;$(HaveBoost);NDEBUG;WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
381381
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
382382
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
383383
<MultiProcessorCompilation>true</MultiProcessorCompilation>

lib/cppcheck.vcxproj.filters

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,9 @@
224224
<ClCompile Include="findtoken.cpp">
225225
<Filter>Source Files</Filter>
226226
</ClCompile>
227+
<ClCompile Include="regex.cpp">
228+
<Filter>Source Files</Filter>
229+
</ClCompile>
227230
</ItemGroup>
228231
<ItemGroup Label="HeaderFiles">
229232
<ClInclude Include="checkbufferoverrun.h">
@@ -478,6 +481,9 @@
478481
<ClInclude Include="xml.h">
479482
<Filter>Header Files</Filter>
480483
</ClInclude>
484+
<ClInclude Include="regex.h">
485+
<Filter>Header Files</Filter>
486+
</ClInclude>
481487
</ItemGroup>
482488
<ItemGroup>
483489
<Natvis Include="cppcheck.natvis">

releasenotes.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ Other:
2525
- `CPPFLAGS` are not longer being passed to the linker command for `cppcheck` and `testrunner`.
2626
- Removed deprecated platforms `unix32-unsigned` and `unix64-unsigned`.
2727
- Updated Qt to 6.10.0 (official Windows release only).
28+
- The official Windows binary is now built against Boost 1.89 for increased performance.
2829
-

test/testrunner.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,11 @@
202202
</PropertyGroup>
203203
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
204204
<ClCompile>
205-
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
205+
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
206206
<BufferSecurityCheck>true</BufferSecurityCheck>
207207
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
208208
<Optimization>Disabled</Optimization>
209-
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
209+
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;$(HaveBoost);WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
210210
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
211211
<WarningLevel>Level4</WarningLevel>
212212
<DisableSpecificWarnings>4018;4127;4146;4244;4251;4267;4389;4701;4706;4800;4805</DisableSpecificWarnings>
@@ -231,11 +231,11 @@
231231
</ItemDefinitionGroup>
232232
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-PCRE|x64'">
233233
<ClCompile>
234-
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
234+
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
235235
<BufferSecurityCheck>true</BufferSecurityCheck>
236236
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
237237
<Optimization>Disabled</Optimization>
238-
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
238+
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;$(HaveBoost);WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
239239
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
240240
<WarningLevel>Level4</WarningLevel>
241241
<DisableSpecificWarnings>4018;4127;4146;4244;4251;4267;4389;4701;4706;4800;4805</DisableSpecificWarnings>
@@ -260,10 +260,10 @@
260260
</ItemDefinitionGroup>
261261
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
262262
<ClCompile>
263-
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
263+
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
264264
<BufferSecurityCheck>false</BufferSecurityCheck>
265265
<Optimization>MaxSpeed</Optimization>
266-
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
266+
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;$(HaveBoost);NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
267267
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
268268
<WarningLevel>Level4</WarningLevel>
269269
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
@@ -300,10 +300,10 @@
300300
</ItemDefinitionGroup>
301301
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-PCRE|x64'">
302302
<ClCompile>
303-
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
303+
<AdditionalIncludeDirectories>..\cli;..\frontend;..\lib;..\externals;..\externals\picojson;..\externals\simplecpp;..\externals\tinyxml2;$(BoostInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
304304
<BufferSecurityCheck>false</BufferSecurityCheck>
305305
<Optimization>MaxSpeed</Optimization>
306-
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;NDEBUG;WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
306+
<PreprocessorDefinitions>CPPCHECKLIB_IMPORT;SIMPLECPP_IMPORT;$(HaveBoost);NDEBUG;WIN32;HAVE_RULES;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
307307
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
308308
<WarningLevel>Level4</WarningLevel>
309309
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>

test/testrunner.vcxproj.filters

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,12 @@
274274
<ClCompile Include="..\frontend\frontend.cpp">
275275
<Filter>Source Files</Filter>
276276
</ClCompile>
277+
<ClCompile Include="testfrontend.cpp">
278+
<Filter>Source Files</Filter>
279+
</ClCompile>
280+
<ClCompile Include="testregex.cpp">
281+
<Filter>Source Files</Filter>
282+
</ClCompile>
277283
</ItemGroup>
278284
<ItemGroup Label="HeaderFiles">
279285
<ClInclude Include="options.h">

0 commit comments

Comments
 (0)