OXIESEC PANEL
- Current Dir:
/
/
usr
/
local
/
doc
/
cmake
/
html
/
module
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
π
..
-
04/04/2023 07:10:48 PM
rwxr-xr-x
π
AddFileDependencies.html
6.97 KB
04/04/2023 07:05:13 PM
rw-r--r--
π
AndroidTestUtilities.html
11.57 KB
04/04/2023 07:05:13 PM
rw-r--r--
π
BundleUtilities.html
24.15 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeAddFortranSubdirectory.html
8.05 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeBackwardCompatibilityCXX.html
5.61 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeDependentOption.html
9.43 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeDetermineVSServicePack.html
6.52 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeExpandImportedTargets.html
8.86 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeFindDependencyMacro.html
11.09 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeFindFrameworks.html
5.41 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeFindPackageMode.html
6.5 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeForceCompiler.html
10.23 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeGraphVizOptions.html
15.93 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakePackageConfigHelpers.html
30.38 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeParseArguments.html
5.58 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakePrintHelpers.html
7.05 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakePrintSystemInformation.html
5.29 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakePushCheckState.html
8.23 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CMakeVerifyManifest.html
5.51 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPack.html
63.98 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackArchive.html
5.48 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackBundle.html
5.36 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackComponent.html
26.3 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackCygwin.html
5.33 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackDMG.html
5.32 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackDeb.html
5.29 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackFreeBSD.html
5.43 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackIFW.html
30.28 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackIFWConfigureFile.html
7 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackNSIS.html
5.32 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackNuGet.html
5.47 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackProductBuild.html
5.5 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackRPM.html
5.33 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CPackWIX.html
5.37 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CSharpUtilities.html
22.41 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CTest.html
8.11 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CTestCoverageCollectGCOV.html
13.64 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CTestScriptMode.html
5.14 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CTestUseLaunchers.html
6.6 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCCompilerFlag.html
7.68 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCSourceCompiles.html
11.89 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCSourceRuns.html
11.61 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCXXCompilerFlag.html
7.77 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCXXSourceCompiles.html
11.97 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCXXSourceRuns.html
11.65 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCXXSymbolExists.html
11.76 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckCompilerFlag.html
7.89 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckFortranCompilerFlag.html
8.01 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckFortranFunctionExists.html
8.42 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckFortranSourceCompiles.html
13.92 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckFortranSourceRuns.html
12.96 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckFunctionExists.html
9.19 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckIPOSupported.html
11.62 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckIncludeFile.html
9.28 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckIncludeFileCXX.html
9.24 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckIncludeFiles.html
9.79 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckLanguage.html
7.45 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckLibraryExists.html
7.15 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckLinkerFlag.html
9.01 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckOBJCCompilerFlag.html
7.9 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckOBJCSourceCompiles.html
11.92 KB
04/04/2023 07:05:14 PM
rw-r--r--
π
CheckOBJCSourceRuns.html
11.63 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckOBJCXXCompilerFlag.html
7.98 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckOBJCXXSourceCompiles.html
11.99 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckOBJCXXSourceRuns.html
11.63 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckPIESupported.html
11.58 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckPrototypeDefinition.html
8.21 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckSourceCompiles.html
13.34 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckSourceRuns.html
12.93 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckStructHasMember.html
8.27 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckSymbolExists.html
10.57 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckTypeSize.html
11.37 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
CheckVariableExists.html
7.15 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
Dart.html
5.55 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
DeployQt4.html
8.86 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
Documentation.html
5.7 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
ExternalData.html
39.76 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
ExternalProject.html
119.65 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FeatureSummary.html
36.68 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FetchContent.html
138.33 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindALSA.html
7.34 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindASPELL.html
5.31 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindAVIFile.html
5.58 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindArmadillo.html
6.13 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindBISON.html
12.23 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindBLAS.html
19.4 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindBZip2.html
8.33 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindBacktrace.html
7.48 KB
04/04/2023 07:05:15 PM
rw-r--r--
π
FindBoost.html
39.14 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindBullet.html
5.71 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCABLE.html
5.44 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCUDA.html
55.38 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCUDAToolkit.html
38.35 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCURL.html
8.86 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCVS.html
5.38 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCoin3D.html
5.4 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCups.html
7.61 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCurses.html
8.47 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCxxTest.html
8.86 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindCygwin.html
4.97 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindDCMTK.html
9.88 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindDart.html
4.98 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindDevIL.html
8.14 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindDoxygen.html
35.36 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindEXPAT.html
6.84 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindEnvModules.html
17.08 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindFLEX.html
9.8 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindFLTK.html
9.31 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindFLTK2.html
5.63 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindFontconfig.html
6.83 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindFreetype.html
7.93 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGCCXML.html
5.13 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGDAL.html
8.53 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGIF.html
7.91 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGLEW.html
9.01 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGLUT.html
8.84 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGSL.html
8.7 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGTK.html
5.16 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGTK2.html
14.35 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGTest.html
12.62 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGettext.html
7.29 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGit.html
6.74 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGnuTLS.html
6.81 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindGnuplot.html
5.27 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindHDF5.html
17.47 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindHSPELL.html
5.53 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindHTMLHelp.html
5.24 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindHg.html
6.23 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindICU.html
9.91 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindITK.html
5.43 KB
04/04/2023 07:05:16 PM
rw-r--r--
π
FindIce.html
14.89 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindIconv.html
10.11 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindIcotool.html
5.26 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindImageMagick.html
12.01 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindIntl.html
10.69 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindJNI.html
12.24 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindJPEG.html
8.44 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindJasper.html
7.21 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindJava.html
9.53 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindKDE3.html
10.05 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindKDE4.html
5.63 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLAPACK.html
12.04 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLATEX.html
6.7 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLTTngUST.html
7.6 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLibArchive.html
5.96 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLibLZMA.html
8.68 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLibXml2.html
8.24 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLibXslt.html
7.65 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLibinput.html
6.81 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLua.html
6.46 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLua50.html
5.61 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindLua51.html
5.64 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMFC.html
5.21 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMPEG.html
5.41 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMPEG2.html
5.41 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMPI.html
29.38 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMatlab.html
47.34 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMotif.html
5.14 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindMsys.html
5.02 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindODBC.html
10.44 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenACC.html
10.21 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenAL.html
9.04 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenCL.html
7.09 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenGL.html
16.22 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenMP.html
12.65 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenSP.html
9.44 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenSSL.html
13.11 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenSceneGraph.html
10.93 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindOpenThreads.html
5.72 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPHP4.html
5.31 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPNG.html
7.88 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPackageHandleStandardArgs.html
24.77 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPackageMessage.html
6.76 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPatch.html
6.42 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPerl.html
5.19 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPerlLibs.html
6.56 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPhysFS.html
5.21 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPike.html
5.31 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPkgConfig.html
33.09 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPostgreSQL.html
7.82 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindProducer.html
6.05 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindProtobuf.html
16.5 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPython.html
50.47 KB
04/04/2023 07:05:17 PM
rw-r--r--
π
FindPython2.html
38.39 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindPython3.html
50.35 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindPythonInterp.html
8.55 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindPythonLibs.html
7.54 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindQt.html
6.83 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindQt3.html
5.76 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindQt4.html
24.58 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindQuickTime.html
5.16 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindRTI.html
5.91 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindRuby.html
10.42 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL.html
11.03 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL_gfx.html
5.82 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL_image.html
5.77 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL_mixer.html
5.8 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL_net.html
5.76 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL_sound.html
6.89 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSDL_ttf.html
5.78 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSQLite3.html
6.77 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSWIG.html
10.06 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSelfPackers.html
5.27 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSquish.html
9.18 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindSubversion.html
8.03 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindTCL.html
6.66 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindTIFF.html
9.39 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindTclStub.html
6.41 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindTclsh.html
5.26 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindThreads.html
8.35 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindUnixCommands.html
6.32 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindVTK.html
5.47 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindVulkan.html
17.6 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindWget.html
5.13 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindWish.html
5.31 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindX11.html
11.53 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindXCTest.html
9.17 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindXMLRPC.html
5.75 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindXalanC.html
7.75 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindXercesC.html
7.82 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindZLIB.html
10.7 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
Findosg.html
6.16 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgAnimation.html
6.1 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgDB.html
7.27 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgFX.html
5.94 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgGA.html
6.02 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgIntrospection.html
6.19 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgManipulator.html
6.22 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgParticle.html
6.18 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgPresentation.html
6.27 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgProducer.html
6.11 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgQt.html
6.06 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgShadow.html
6 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgSim.html
6.01 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgTerrain.html
6.04 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgText.html
6.02 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgUtil.html
6.01 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgViewer.html
6.04 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgVolume.html
6.06 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindosgWidget.html
6.08 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
Findosg_functions.html
5.12 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindwxWidgets.html
10.04 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FindwxWindows.html
7.49 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
FortranCInterface.html
19.85 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
GNUInstallDirs.html
18.76 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
GenerateExportHeader.html
22.11 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
GetPrerequisites.html
12.02 KB
04/04/2023 07:05:18 PM
rw-r--r--
π
GoogleTest.html
29.52 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
InstallRequiredSystemLibraries.html
9.74 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
MacroAddFileDependencies.html
6.58 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
ProcessorCount.html
8.6 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
SelectLibraryConfigurations.html
7.3 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
SquishTestScript.html
5.48 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
TestBigEndian.html
6.29 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
TestCXXAcceptsFlag.html
6.2 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
TestForANSIForScope.html
5.38 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
TestForANSIStreamHeaders.html
5.4 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
TestForSSTREAM.html
5.37 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
TestForSTDNamespace.html
5.21 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UseEcos.html
5.94 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UseJava.html
49.93 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UseJavaClassFilelist.html
5.54 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UseJavaSymlinks.html
5.49 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UsePkgConfig.html
5.5 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UseSWIG.html
48.54 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
Use_wxWindows.html
6.1 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
UsewxWidgets.html
5.79 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
WriteBasicConfigVersionFile.html
6.3 KB
04/04/2023 07:05:19 PM
rw-r--r--
π
WriteCompilerDetectionHeader.html
48.31 KB
04/04/2023 07:05:19 PM
rw-r--r--
Editing: WriteCompilerDetectionHeader.html
Close
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> <title>WriteCompilerDetectionHeader — CMake 3.26.3 Documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> <link rel="stylesheet" type="text/css" href="../_static/cmake.css" /> <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> <script src="../_static/jquery.js"></script> <script src="../_static/underscore.js"></script> <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="../_static/doctools.js"></script> <link rel="shortcut icon" href="../_static/cmake-favicon.ico"/> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="FindCUDA" href="FindCUDA.html" /> <link rel="prev" title="WriteBasicConfigVersionFile" href="WriteBasicConfigVersionFile.html" /> </head><body> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="FindCUDA.html" title="FindCUDA" accesskey="N">next</a> |</li> <li class="right" > <a href="WriteBasicConfigVersionFile.html" title="WriteBasicConfigVersionFile" accesskey="P">previous</a> |</li> <li> <img src="../_static/cmake-logo-16.png" alt="" style="vertical-align: middle; margin-top: -2px" /> </li> <li> <a href="https://cmake.org/">CMake</a> » </li> <li> <a href="../index.html">3.26.3 Documentation</a> » </li> <li class="nav-item nav-item-1"><a href="../manual/cmake-modules.7.html" accesskey="U">cmake-modules(7)</a> »</li> <li class="nav-item nav-item-this"><a href="">WriteCompilerDetectionHeader</a></li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <section id="writecompilerdetectionheader"> <span id="module:WriteCompilerDetectionHeader"></span><h1>WriteCompilerDetectionHeader<a class="headerlink" href="#writecompilerdetectionheader" title="Permalink to this heading">ΒΆ</a></h1> <div class="deprecated"> <p><span class="versionmodified deprecated">Deprecated since version 3.20: </span>This module is available only if policy <span class="target" id="index-0-policy:CMP0120"></span><a class="reference internal" href="../policy/CMP0120.html#policy:CMP0120" title="CMP0120"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0120</span></code></a> is not set to <code class="docutils literal notranslate"><span class="pre">NEW</span></code>. Do not use it in new code.</p> </div> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.1.</span></p> </div> <p>This module provides the function <code class="docutils literal notranslate"><span class="pre">write_compiler_detection_header()</span></code>.</p> <p>This function can be used to generate a file suitable for preprocessor inclusion which contains macros to be used in source code:</p> <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>write_compiler_detection_header( FILE <file> PREFIX <prefix> [OUTPUT_FILES_VAR <output_files_var> OUTPUT_DIR <output_dir>] COMPILERS <compiler> [...] FEATURES <feature> [...] [BARE_FEATURES <feature> [...]] [VERSION <version>] [PROLOG <prolog>] [EPILOG <epilog>] [ALLOW_UNKNOWN_COMPILERS] [ALLOW_UNKNOWN_COMPILER_VERSIONS] ) </pre></div> </div> <p>This generates the file <code class="docutils literal notranslate"><span class="pre"><file></span></code> with macros which all have the prefix <code class="docutils literal notranslate"><span class="pre"><prefix></span></code>.</p> <p>By default, all content is written directly to the <code class="docutils literal notranslate"><span class="pre"><file></span></code>. The <code class="docutils literal notranslate"><span class="pre">OUTPUT_FILES_VAR</span></code> may be specified to cause the compiler-specific content to be written to separate files. The separate files are then available in the <code class="docutils literal notranslate"><span class="pre"><output_files_var></span></code> and may be consumed by the caller for installation for example. The <code class="docutils literal notranslate"><span class="pre">OUTPUT_DIR</span></code> specifies a relative path from the main <code class="docutils literal notranslate"><span class="pre"><file></span></code> to the compiler-specific files. For example:</p> <div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nf">write_compiler_detection_header(</span><span class="w"></span> <span class="w"> </span><span class="no">FILE</span><span class="w"> </span><span class="nb">climbingstats_compiler_detection.h</span><span class="w"></span> <span class="w"> </span><span class="no">PREFIX</span><span class="w"> </span><span class="nb">ClimbingStats</span><span class="w"></span> <span class="w"> </span><span class="no">OUTPUT_FILES_VAR</span><span class="w"> </span><span class="nb">support_files</span><span class="w"></span> <span class="w"> </span><span class="no">OUTPUT_DIR</span><span class="w"> </span><span class="nb">compilers</span><span class="w"></span> <span class="w"> </span><span class="no">COMPILERS</span><span class="w"> </span><span class="no">GNU</span><span class="w"> </span><span class="nb">Clang</span><span class="w"> </span><span class="no">MSVC</span><span class="w"> </span><span class="nb">Intel</span><span class="w"></span> <span class="w"> </span><span class="no">FEATURES</span><span class="w"> </span><span class="nb">cxx_variadic_templates</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> <span class="nf">install(</span><span class="no">FILES</span><span class="w"></span> <span class="w"> </span><span class="o">${</span><span class="nt">CMAKE_CURRENT_BINARY_DIR</span><span class="o">}</span><span class="na">/climbingstats_compiler_detection.h</span><span class="w"></span> <span class="w"> </span><span class="no">DESTINATION</span><span class="w"> </span><span class="nb">include</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> <span class="nf">install(</span><span class="no">FILES</span><span class="w"></span> <span class="w"> </span><span class="o">${</span><span class="nt">support_files</span><span class="o">}</span><span class="w"></span> <span class="w"> </span><span class="no">DESTINATION</span><span class="w"> </span><span class="na">include/compilers</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> </pre></div> </div> <p><code class="docutils literal notranslate"><span class="pre">VERSION</span></code> may be used to specify the API version to be generated. Future versions of CMake may introduce alternative APIs. A given API is selected by any <code class="docutils literal notranslate"><span class="pre"><version></span></code> value greater than or equal to the version of CMake that introduced the given API and less than the version of CMake that introduced its succeeding API. The value of the <span class="target" id="index-0-variable:CMAKE_MINIMUM_REQUIRED_VERSION"></span><a class="reference internal" href="../variable/CMAKE_MINIMUM_REQUIRED_VERSION.html#variable:CMAKE_MINIMUM_REQUIRED_VERSION" title="CMAKE_MINIMUM_REQUIRED_VERSION"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_MINIMUM_REQUIRED_VERSION</span></code></a> variable is used if no explicit version is specified. (As of CMake version 3.26.3 there is only one API version.)</p> <p><code class="docutils literal notranslate"><span class="pre">PROLOG</span></code> may be specified as text content to write at the start of the header. <code class="docutils literal notranslate"><span class="pre">EPILOG</span></code> may be specified as text content to write at the end of the header</p> <p>At least one <code class="docutils literal notranslate"><span class="pre"><compiler></span></code> and one <code class="docutils literal notranslate"><span class="pre"><feature></span></code> must be listed. Compilers which are known to CMake, but not specified are detected and a preprocessor <code class="docutils literal notranslate"><span class="pre">#error</span></code> is generated for them. A preprocessor macro matching <code class="docutils literal notranslate"><span class="pre"><PREFIX>_COMPILER_IS_<compiler></span></code> is generated for each compiler known to CMake to contain the value <code class="docutils literal notranslate"><span class="pre">0</span></code> or <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p> <p>Possible compiler identifiers are documented with the <span class="target" id="index-0-variable:CMAKE_<LANG>_COMPILER_ID"></span><a class="reference internal" href="../variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_<LANG>_COMPILER_ID" title="CMAKE_<LANG>_COMPILER_ID"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_<LANG>_COMPILER_ID</span></code></a> variable. Available features in this version of CMake are listed in the <span class="target" id="index-0-prop_gbl:CMAKE_C_KNOWN_FEATURES"></span><a class="reference internal" href="../prop_gbl/CMAKE_C_KNOWN_FEATURES.html#prop_gbl:CMAKE_C_KNOWN_FEATURES" title="CMAKE_C_KNOWN_FEATURES"><code class="xref cmake cmake-prop_gbl docutils literal notranslate"><span class="pre">CMAKE_C_KNOWN_FEATURES</span></code></a> and <span class="target" id="index-0-prop_gbl:CMAKE_CXX_KNOWN_FEATURES"></span><a class="reference internal" href="../prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html#prop_gbl:CMAKE_CXX_KNOWN_FEATURES" title="CMAKE_CXX_KNOWN_FEATURES"><code class="xref cmake cmake-prop_gbl docutils literal notranslate"><span class="pre">CMAKE_CXX_KNOWN_FEATURES</span></code></a> global properties. See the <span class="target" id="index-0-manual:cmake-compile-features(7)"></span><a class="reference internal" href="../manual/cmake-compile-features.7.html#manual:cmake-compile-features(7)" title="cmake-compile-features(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-compile-features(7)</span></code></a> manual for information on compile features.</p> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.2: </span>Added <code class="docutils literal notranslate"><span class="pre">MSVC</span></code> and <code class="docutils literal notranslate"><span class="pre">AppleClang</span></code> compiler support.</p> </div> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.6: </span>Added <code class="docutils literal notranslate"><span class="pre">Intel</span></code> compiler support.</p> </div> <div class="versionchanged"> <p><span class="versionmodified changed">Changed in version 3.8: </span>The <code class="docutils literal notranslate"><span class="pre">{c,cxx}_std_*</span></code> meta-features are ignored if requested.</p> </div> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.8: </span><code class="docutils literal notranslate"><span class="pre">ALLOW_UNKNOWN_COMPILERS</span></code> and <code class="docutils literal notranslate"><span class="pre">ALLOW_UNKNOWN_COMPILER_VERSIONS</span></code> cause the module to generate conditions that treat unknown compilers as simply lacking all features. Without these options the default behavior is to generate a <code class="docutils literal notranslate"><span class="pre">#error</span></code> for unknown compilers and versions.</p> </div> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.12: </span><code class="docutils literal notranslate"><span class="pre">BARE_FEATURES</span></code> will define the compatibility macros with the name used in newer versions of the language standard, so the code can use the new feature name unconditionally.</p> </div> <section id="feature-test-macros"> <h2>Feature Test Macros<a class="headerlink" href="#feature-test-macros" title="Permalink to this heading">ΒΆ</a></h2> <p>For each compiler, a preprocessor macro is generated matching <code class="docutils literal notranslate"><span class="pre"><PREFIX>_COMPILER_IS_<compiler></span></code> which has the content either <code class="docutils literal notranslate"><span class="pre">0</span></code> or <code class="docutils literal notranslate"><span class="pre">1</span></code>, depending on the compiler in use. Preprocessor macros for compiler version components are generated matching <code class="docutils literal notranslate"><span class="pre"><PREFIX>_COMPILER_VERSION_MAJOR</span></code> <code class="docutils literal notranslate"><span class="pre"><PREFIX>_COMPILER_VERSION_MINOR</span></code> and <code class="docutils literal notranslate"><span class="pre"><PREFIX>_COMPILER_VERSION_PATCH</span></code> containing decimal values for the corresponding compiler version components, if defined.</p> <p>A preprocessor test is generated based on the compiler version denoting whether each feature is enabled. A preprocessor macro matching <code class="docutils literal notranslate"><span class="pre"><PREFIX>_COMPILER_<FEATURE></span></code>, where <code class="docutils literal notranslate"><span class="pre"><FEATURE></span></code> is the upper-case <code class="docutils literal notranslate"><span class="pre"><feature></span></code> name, is generated to contain the value <code class="docutils literal notranslate"><span class="pre">0</span></code> or <code class="docutils literal notranslate"><span class="pre">1</span></code> depending on whether the compiler in use supports the feature:</p> <div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nf">write_compiler_detection_header(</span><span class="w"></span> <span class="w"> </span><span class="no">FILE</span><span class="w"> </span><span class="nb">climbingstats_compiler_detection.h</span><span class="w"></span> <span class="w"> </span><span class="no">PREFIX</span><span class="w"> </span><span class="nb">ClimbingStats</span><span class="w"></span> <span class="w"> </span><span class="no">COMPILERS</span><span class="w"> </span><span class="no">GNU</span><span class="w"> </span><span class="nb">Clang</span><span class="w"> </span><span class="nb">AppleClang</span><span class="w"> </span><span class="no">MSVC</span><span class="w"> </span><span class="nb">Intel</span><span class="w"></span> <span class="w"> </span><span class="no">FEATURES</span><span class="w"> </span><span class="nb">cxx_variadic_templates</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> </pre></div> </div> <div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#if ClimbingStats_COMPILER_CXX_VARIADIC_TEMPLATES</span> <span class="k">template</span><span class="o"><</span><span class="k">typename</span><span class="p">...</span><span class="w"> </span><span class="n">T</span><span class="o">></span><span class="w"></span> <span class="kt">void</span><span class="w"> </span><span class="n">someInterface</span><span class="p">(</span><span class="n">T</span><span class="w"> </span><span class="n">t</span><span class="p">...)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* ... */</span><span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="cp">#else</span> <span class="c1">// Compatibility versions</span> <span class="k">template</span><span class="o"><</span><span class="k">typename</span><span class="w"> </span><span class="nc">T1</span><span class="o">></span><span class="w"></span> <span class="kt">void</span><span class="w"> </span><span class="n">someInterface</span><span class="p">(</span><span class="n">T1</span><span class="w"> </span><span class="n">t1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* ... */</span><span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="k">template</span><span class="o"><</span><span class="k">typename</span><span class="w"> </span><span class="nc">T1</span><span class="p">,</span><span class="w"> </span><span class="k">typename</span><span class="w"> </span><span class="nc">T2</span><span class="o">></span><span class="w"></span> <span class="kt">void</span><span class="w"> </span><span class="n">someInterface</span><span class="p">(</span><span class="n">T1</span><span class="w"> </span><span class="n">t1</span><span class="p">,</span><span class="w"> </span><span class="n">T2</span><span class="w"> </span><span class="n">t2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* ... */</span><span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="k">template</span><span class="o"><</span><span class="k">typename</span><span class="w"> </span><span class="nc">T1</span><span class="p">,</span><span class="w"> </span><span class="k">typename</span><span class="w"> </span><span class="nc">T2</span><span class="p">,</span><span class="w"> </span><span class="k">typename</span><span class="w"> </span><span class="nc">T3</span><span class="o">></span><span class="w"></span> <span class="kt">void</span><span class="w"> </span><span class="n">someInterface</span><span class="p">(</span><span class="n">T1</span><span class="w"> </span><span class="n">t1</span><span class="p">,</span><span class="w"> </span><span class="n">T2</span><span class="w"> </span><span class="n">t2</span><span class="p">,</span><span class="w"> </span><span class="n">T3</span><span class="w"> </span><span class="n">t3</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* ... */</span><span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="cp">#endif</span> </pre></div> </div> </section> <section id="symbol-macros"> <h2>Symbol Macros<a class="headerlink" href="#symbol-macros" title="Permalink to this heading">ΒΆ</a></h2> <p>Some additional symbol-defines are created for particular features for use as symbols which may be conditionally defined empty:</p> <div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="n">ClimbingStats_FINAL</span><span class="w"></span> <span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="n">ClimbingStats_CONSTEXPR</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">someInterface</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">42</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="p">};</span><span class="w"></span> </pre></div> </div> <p>The <code class="docutils literal notranslate"><span class="pre">ClimbingStats_FINAL</span></code> macro will expand to <code class="docutils literal notranslate"><span class="pre">final</span></code> if the compiler (and its flags) support the <code class="docutils literal notranslate"><span class="pre">cxx_final</span></code> feature, and the <code class="docutils literal notranslate"><span class="pre">ClimbingStats_CONSTEXPR</span></code> macro will expand to <code class="docutils literal notranslate"><span class="pre">constexpr</span></code> if <code class="docutils literal notranslate"><span class="pre">cxx_constexpr</span></code> is supported.</p> <p>If <code class="docutils literal notranslate"><span class="pre">BARE_FEATURES</span> <span class="pre">cxx_final</span></code> was given as argument the <code class="docutils literal notranslate"><span class="pre">final</span></code> keyword will be defined for old compilers, too.</p> <p>The following features generate corresponding symbol defines and if they are available as <code class="docutils literal notranslate"><span class="pre">BARE_FEATURES</span></code>:</p> <table class="docutils align-default"> <thead> <tr class="row-odd"><th class="head"><p>Feature</p></th> <th class="head"><p>Define</p></th> <th class="head"><p>Symbol</p></th> <th class="head"><p>bare</p></th> </tr> </thead> <tbody> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">c_restrict</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_RESTRICT</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">restrict</span></code></p></td> <td><p>yes</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_constexpr</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_CONSTEXPR</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">constexpr</span></code></p></td> <td><p>yes</p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_deleted_functions</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_DELETED_FUNCTION</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">=</span> <span class="pre">delete</span></code></p></td> <td></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_extern_templates</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_EXTERN_TEMPLATE</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">extern</span></code></p></td> <td></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_final</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_FINAL</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">final</span></code></p></td> <td><p>yes</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_noexcept</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_NOEXCEPT</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">noexcept</span></code></p></td> <td><p>yes</p></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_noexcept</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_NOEXCEPT_EXPR(X)</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">noexcept(X)</span></code></p></td> <td></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_override</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_OVERRIDE</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">override</span></code></p></td> <td><p>yes</p></td> </tr> </tbody> </table> </section> <section id="compatibility-implementation-macros"> <h2>Compatibility Implementation Macros<a class="headerlink" href="#compatibility-implementation-macros" title="Permalink to this heading">ΒΆ</a></h2> <p>Some features are suitable for wrapping in a macro with a backward compatibility implementation if the compiler does not support the feature.</p> <p>When the <code class="docutils literal notranslate"><span class="pre">cxx_static_assert</span></code> feature is not provided by the compiler, a compatibility implementation is available via the <code class="docutils literal notranslate"><span class="pre"><PREFIX>_STATIC_ASSERT(COND)</span></code> and <code class="docutils literal notranslate"><span class="pre"><PREFIX>_STATIC_ASSERT_MSG(COND,</span> <span class="pre">MSG)</span></code> function-like macros. The macros expand to <code class="docutils literal notranslate"><span class="pre">static_assert</span></code> where that compiler feature is available, and to a compatibility implementation otherwise. In the first form, the condition is stringified in the message field of <code class="docutils literal notranslate"><span class="pre">static_assert</span></code>. In the second form, the message <code class="docutils literal notranslate"><span class="pre">MSG</span></code> is passed to the message field of <code class="docutils literal notranslate"><span class="pre">static_assert</span></code>, or ignored if using the backward compatibility implementation.</p> <p>The <code class="docutils literal notranslate"><span class="pre">cxx_attribute_deprecated</span></code> feature provides a macro definition <code class="docutils literal notranslate"><span class="pre"><PREFIX>_DEPRECATED</span></code>, which expands to either the standard <code class="docutils literal notranslate"><span class="pre">[[deprecated]]</span></code> attribute or a compiler-specific decorator such as <code class="docutils literal notranslate"><span class="pre">__attribute__((__deprecated__))</span></code> used by GNU compilers.</p> <p>The <code class="docutils literal notranslate"><span class="pre">cxx_alignas</span></code> feature provides a macro definition <code class="docutils literal notranslate"><span class="pre"><PREFIX>_ALIGNAS</span></code> which expands to either the standard <code class="docutils literal notranslate"><span class="pre">alignas</span></code> decorator or a compiler-specific decorator such as <code class="docutils literal notranslate"><span class="pre">__attribute__</span> <span class="pre">((__aligned__))</span></code> used by GNU compilers.</p> <p>The <code class="docutils literal notranslate"><span class="pre">cxx_alignof</span></code> feature provides a macro definition <code class="docutils literal notranslate"><span class="pre"><PREFIX>_ALIGNOF</span></code> which expands to either the standard <code class="docutils literal notranslate"><span class="pre">alignof</span></code> decorator or a compiler-specific decorator such as <code class="docutils literal notranslate"><span class="pre">__alignof__</span></code> used by GNU compilers.</p> <table class="docutils align-default"> <thead> <tr class="row-odd"><th class="head"><p>Feature</p></th> <th class="head"><p>Define</p></th> <th class="head"><p>Symbol</p></th> <th class="head"><p>bare</p></th> </tr> </thead> <tbody> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_alignas</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_ALIGNAS</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">alignas</span></code></p></td> <td></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_alignof</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_ALIGNOF</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">alignof</span></code></p></td> <td></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_nullptr</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_NULLPTR</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">nullptr</span></code></p></td> <td><p>yes</p></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_static_assert</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_STATIC_ASSERT</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">static_assert</span></code></p></td> <td></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_static_assert</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_STATIC_ASSERT_MSG</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">static_assert</span></code></p></td> <td></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_attribute_deprecated</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_DEPRECATED</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">[[deprecated]]</span></code></p></td> <td></td> </tr> <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_attribute_deprecated</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_DEPRECATED_MSG</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">[[deprecated]]</span></code></p></td> <td></td> </tr> <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">cxx_thread_local</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre"><PREFIX>_THREAD_LOCAL</span></code></p></td> <td><p><code class="docutils literal notranslate"><span class="pre">thread_local</span></code></p></td> <td></td> </tr> </tbody> </table> <p>A use-case which arises with such deprecation macros is the deprecation of an entire library. In that case, all public API in the library may be decorated with the <code class="docutils literal notranslate"><span class="pre"><PREFIX>_DEPRECATED</span></code> macro. This results in very noisy build output when building the library itself, so the macro may be may be defined to empty in that case when building the deprecated library:</p> <div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nf">add_library(</span><span class="nb">compat_support</span><span class="w"> </span><span class="o">${</span><span class="nt">srcs</span><span class="o">}</span><span class="nf">)</span><span class="w"></span> <span class="nf">target_compile_definitions(</span><span class="nb">compat_support</span><span class="w"></span> <span class="w"> </span><span class="no">PRIVATE</span><span class="w"></span> <span class="w"> </span><span class="nb">CompatSupport_DEPRECATED</span><span class="p">=</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> </pre></div> </div> </section> <section id="example-usage"> <span id="wcdh-example-usage"></span><h2>Example Usage<a class="headerlink" href="#example-usage" title="Permalink to this heading">ΒΆ</a></h2> <div class="admonition note"> <p class="admonition-title">Note</p> <p>This section was migrated from the <span class="target" id="index-1-manual:cmake-compile-features(7)"></span><a class="reference internal" href="../manual/cmake-compile-features.7.html#manual:cmake-compile-features(7)" title="cmake-compile-features(7)"><code class="xref cmake cmake-manual docutils literal notranslate"><span class="pre">cmake-compile-features(7)</span></code></a> manual since it relies on the <code class="docutils literal notranslate"><span class="pre">WriteCompilerDetectionHeader</span></code> module which is removed by policy <span class="target" id="index-1-policy:CMP0120"></span><a class="reference internal" href="../policy/CMP0120.html#policy:CMP0120" title="CMP0120"><code class="xref cmake cmake-policy docutils literal notranslate"><span class="pre">CMP0120</span></code></a>.</p> </div> <p>Compile features may be preferred if available, without creating a hard requirement. For example, a library may provide alternative implementations depending on whether the <code class="docutils literal notranslate"><span class="pre">cxx_variadic_templates</span></code> feature is available:</p> <div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#if Foo_COMPILER_CXX_VARIADIC_TEMPLATES</span> <span class="k">template</span><span class="o"><</span><span class="kt">int</span><span class="w"> </span><span class="n">I</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="p">...</span><span class="w"> </span><span class="n">Is</span><span class="o">></span><span class="w"></span> <span class="k">struct</span><span class="w"> </span><span class="nc">Interface</span><span class="p">;</span><span class="w"></span> <span class="k">template</span><span class="o"><</span><span class="kt">int</span><span class="w"> </span><span class="n">I</span><span class="o">></span><span class="w"></span> <span class="k">struct</span><span class="w"> </span><span class="nc">Interface</span><span class="o"><</span><span class="n">I</span><span class="o">></span><span class="w"></span> <span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">accumulate</span><span class="p">()</span><span class="w"></span> <span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">I</span><span class="p">;</span><span class="w"></span> <span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="p">};</span><span class="w"></span> <span class="k">template</span><span class="o"><</span><span class="kt">int</span><span class="w"> </span><span class="n">I</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="p">...</span><span class="w"> </span><span class="n">Is</span><span class="o">></span><span class="w"></span> <span class="k">struct</span><span class="w"> </span><span class="nc">Interface</span><span class="w"></span> <span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">accumulate</span><span class="p">()</span><span class="w"></span> <span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">I</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">Interface</span><span class="o"><</span><span class="n">Is</span><span class="p">...</span><span class="o">>::</span><span class="n">accumulate</span><span class="p">();</span><span class="w"></span> <span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="p">};</span><span class="w"></span> <span class="cp">#else</span> <span class="k">template</span><span class="o"><</span><span class="kt">int</span><span class="w"> </span><span class="n">I1</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">I2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">I3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">I4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="o">></span><span class="w"></span> <span class="k">struct</span><span class="w"> </span><span class="nc">Interface</span><span class="w"></span> <span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">accumulate</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">I1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">I2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">I3</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">I4</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"></span> <span class="p">};</span><span class="w"></span> <span class="cp">#endif</span> </pre></div> </div> <p>Such an interface depends on using the correct preprocessor defines for the compiler features. CMake can generate a header file containing such defines using the <span class="target" id="index-0-module:WriteCompilerDetectionHeader"></span><a class="reference internal" href="#module:WriteCompilerDetectionHeader" title="WriteCompilerDetectionHeader"><code class="xref cmake cmake-module docutils literal notranslate"><span class="pre">WriteCompilerDetectionHeader</span></code></a> module. The module contains the <code class="docutils literal notranslate"><span class="pre">write_compiler_detection_header</span></code> function which accepts parameters to control the content of the generated header file:</p> <div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nf">write_compiler_detection_header(</span><span class="w"></span> <span class="w"> </span><span class="no">FILE</span><span class="w"> </span><span class="s">"${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"</span><span class="w"></span> <span class="w"> </span><span class="no">PREFIX</span><span class="w"> </span><span class="nb">Foo</span><span class="w"></span> <span class="w"> </span><span class="no">COMPILERS</span><span class="w"> </span><span class="no">GNU</span><span class="w"></span> <span class="w"> </span><span class="no">FEATURES</span><span class="w"></span> <span class="w"> </span><span class="nb">cxx_variadic_templates</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> </pre></div> </div> <p>Such a header file may be used internally in the source code of a project, and it may be installed and used in the interface of library code.</p> <p>For each feature listed in <code class="docutils literal notranslate"><span class="pre">FEATURES</span></code>, a preprocessor definition is created in the header file, and defined to either <code class="docutils literal notranslate"><span class="pre">1</span></code> or <code class="docutils literal notranslate"><span class="pre">0</span></code>.</p> <p>Additionally, some features call for additional defines, such as the <code class="docutils literal notranslate"><span class="pre">cxx_final</span></code> and <code class="docutils literal notranslate"><span class="pre">cxx_override</span></code> features. Rather than being used in <code class="docutils literal notranslate"><span class="pre">#ifdef</span></code> code, the <code class="docutils literal notranslate"><span class="pre">final</span></code> keyword is abstracted by a symbol which is defined to either <code class="docutils literal notranslate"><span class="pre">final</span></code>, a compiler-specific equivalent, or to empty. That way, C++ code can be written to unconditionally use the symbol, and compiler support determines what it is expanded to:</p> <div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">Interface</span><span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">Execute</span><span class="p">()</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"></span> <span class="p">};</span><span class="w"></span> <span class="k">struct</span><span class="w"> </span><span class="nc">Concrete</span><span class="w"> </span><span class="n">Foo_FINAL</span><span class="w"> </span><span class="p">{</span><span class="w"></span> <span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">Execute</span><span class="p">()</span><span class="w"> </span><span class="n">Foo_OVERRIDE</span><span class="p">;</span><span class="w"></span> <span class="p">};</span><span class="w"></span> </pre></div> </div> <p>In this case, <code class="docutils literal notranslate"><span class="pre">Foo_FINAL</span></code> will expand to <code class="docutils literal notranslate"><span class="pre">final</span></code> if the compiler supports the keyword, or to empty otherwise.</p> <p>In this use-case, the project code may wish to enable a particular language standard if available from the compiler. The <span class="target" id="index-0-prop_tgt:CXX_STANDARD"></span><a class="reference internal" href="../prop_tgt/CXX_STANDARD.html#prop_tgt:CXX_STANDARD" title="CXX_STANDARD"><code class="xref cmake cmake-prop_tgt docutils literal notranslate"><span class="pre">CXX_STANDARD</span></code></a> target property may be set to the desired language standard for a particular target, and the <span class="target" id="index-0-variable:CMAKE_CXX_STANDARD"></span><a class="reference internal" href="../variable/CMAKE_CXX_STANDARD.html#variable:CMAKE_CXX_STANDARD" title="CMAKE_CXX_STANDARD"><code class="xref cmake cmake-variable docutils literal notranslate"><span class="pre">CMAKE_CXX_STANDARD</span></code></a> variable may be set to influence all following targets:</p> <div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nf">write_compiler_detection_header(</span><span class="w"></span> <span class="w"> </span><span class="no">FILE</span><span class="w"> </span><span class="s">"${CMAKE_CURRENT_BINARY_DIR}/foo_compiler_detection.h"</span><span class="w"></span> <span class="w"> </span><span class="no">PREFIX</span><span class="w"> </span><span class="nb">Foo</span><span class="w"></span> <span class="w"> </span><span class="no">COMPILERS</span><span class="w"> </span><span class="no">GNU</span><span class="w"></span> <span class="w"> </span><span class="no">FEATURES</span><span class="w"></span> <span class="w"> </span><span class="nb">cxx_final</span><span class="w"> </span><span class="nb">cxx_override</span><span class="w"></span> <span class="nf">)</span><span class="w"></span> <span class="c"># Includes foo_compiler_detection.h and uses the Foo_FINAL symbol</span> <span class="c"># which will expand to 'final' if the compiler supports the requested</span> <span class="c"># CXX_STANDARD.</span> <span class="nf">add_library(</span><span class="nb">foo</span><span class="w"> </span><span class="nb">foo.cpp</span><span class="nf">)</span><span class="w"></span> <span class="nf">set_property(</span><span class="no">TARGET</span><span class="w"> </span><span class="nb">foo</span><span class="w"> </span><span class="no">PROPERTY</span><span class="w"> </span><span class="no">CXX_STANDARD</span><span class="w"> </span><span class="m">11</span><span class="nf">)</span><span class="w"></span> <span class="c"># Includes foo_compiler_detection.h and uses the Foo_FINAL symbol</span> <span class="c"># which will expand to 'final' if the compiler supports the feature,</span> <span class="c"># even though CXX_STANDARD is not set explicitly. The requirement of</span> <span class="c"># cxx_constexpr causes CMake to set CXX_STANDARD internally, which</span> <span class="c"># affects the compile flags.</span> <span class="nf">add_library(</span><span class="nb">foo_impl</span><span class="w"> </span><span class="nb">foo_impl.cpp</span><span class="nf">)</span><span class="w"></span> <span class="nf">target_compile_features(</span><span class="nb">foo_impl</span><span class="w"> </span><span class="no">PRIVATE</span><span class="w"> </span><span class="nb">cxx_constexpr</span><span class="nf">)</span><span class="w"></span> </pre></div> </div> <p>The <code class="docutils literal notranslate"><span class="pre">write_compiler_detection_header</span></code> function also creates compatibility code for other features which have standard equivalents. For example, the <code class="docutils literal notranslate"><span class="pre">cxx_static_assert</span></code> feature is emulated with a template and abstracted via the <code class="docutils literal notranslate"><span class="pre"><PREFIX>_STATIC_ASSERT</span></code> and <code class="docutils literal notranslate"><span class="pre"><PREFIX>_STATIC_ASSERT_MSG</span></code> function-macros.</p> </section> </section> <div class="clearer"></div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <div> <h3><a href="../index.html">Table of Contents</a></h3> <ul> <li><a class="reference internal" href="#">WriteCompilerDetectionHeader</a><ul> <li><a class="reference internal" href="#feature-test-macros">Feature Test Macros</a></li> <li><a class="reference internal" href="#symbol-macros">Symbol Macros</a></li> <li><a class="reference internal" href="#compatibility-implementation-macros">Compatibility Implementation Macros</a></li> <li><a class="reference internal" href="#example-usage">Example Usage</a></li> </ul> </li> </ul> </div> <div> <h4>Previous topic</h4> <p class="topless"><a href="WriteBasicConfigVersionFile.html" title="previous chapter">WriteBasicConfigVersionFile</a></p> </div> <div> <h4>Next topic</h4> <p class="topless"><a href="FindCUDA.html" title="next chapter">FindCUDA</a></p> </div> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/module/WriteCompilerDetectionHeader.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3 id="searchlabel">Quick search</h3> <div class="searchformwrapper"> <form class="search" action="../search.html" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/> <input type="submit" value="Go" /> </form> </div> </div> <script>document.getElementById('searchbox').style.display = "block"</script> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="FindCUDA.html" title="FindCUDA" >next</a> |</li> <li class="right" > <a href="WriteBasicConfigVersionFile.html" title="WriteBasicConfigVersionFile" >previous</a> |</li> <li> <img src="../_static/cmake-logo-16.png" alt="" style="vertical-align: middle; margin-top: -2px" /> </li> <li> <a href="https://cmake.org/">CMake</a> » </li> <li> <a href="../index.html">3.26.3 Documentation</a> » </li> <li class="nav-item nav-item-1"><a href="../manual/cmake-modules.7.html" >cmake-modules(7)</a> »</li> <li class="nav-item nav-item-this"><a href="">WriteCompilerDetectionHeader</a></li> </ul> </div> <div class="footer" role="contentinfo"> © Copyright 2000-2023 Kitware, Inc. and Contributors. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2. </div> </body> </html>