PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/share/cmake/Help/release
Viewing File: /usr/share/cmake/Help/release/3.15.rst
CMake 3.15 Release Notes ************************ .. only:: html .. contents:: Changes made since CMake 3.14 include the following. New Features ============ Generators ---------- * The :generator:`Xcode` generator now supports per-target schemes. See the :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable and :prop_tgt:`XCODE_GENERATE_SCHEME` target property. * The :generator:`Green Hills MULTI` generator has been updated: * It now supports the :command:`add_custom_command` and :command:`add_custom_target` commands. * It is now available on Linux. Languages --------- * Preliminary support for the ``Swift`` language was added to the :generator:`Ninja` generator: * Use the :envvar:`SWIFTC` environment variable to specify a compiler. * The :prop_tgt:`Swift_DEPENDENCIES_FILE` target property and :prop_sf:`Swift_DEPENDENCIES_FILE` source file property were added to customize dependency files. * The :prop_tgt:`Swift_MODULE_NAME` target property was added to customize the Swift module name. * The :prop_sf:`Swift_DIAGNOSTICS_FILE` source property was added to indicate where to write the serialized Swift diagnostics. The Swift support is experimental, not considered stable, and may change in future releases of CMake. Compilers --------- * The ``Clang`` compiler variant on Windows that targets the MSVC ABI but has a GNU-like command line is now supported. * Support for the Clang-based ARM compiler was added with compiler id ``ARMClang``. * Support was added for the IAR compiler architectures Renesas RX, RL78, RH850 and Texas Instruments MSP430. * Support was added for the IAR compilers built for Linux (IAR BuildLx). Command-Line ------------ * The :envvar:`CMAKE_GENERATOR` environment variable was added to specify a default generator to use when :manual:`cmake(1)` is run without a ``-G`` option. Additionally, environment variables :envvar:`CMAKE_GENERATOR_PLATFORM`, :envvar:`CMAKE_GENERATOR_TOOLSET`, and :envvar:`CMAKE_GENERATOR_INSTANCE` were created to configure the generator. * The :manual:`cmake(1)` ``--build`` tool ``--target`` parameter gained support for multiple targets, e.g. ``cmake --build . --target Library1 Library2``. It now also has a short form ``-t`` alias, e.g. ``cmake --build . -t Library1 Library2``. * The :manual:`cmake(1)` command gained a new ``--install`` option. This may be used after building a project to run installation without using the generated build system or the native build tool. * The :manual:`cmake(1)` command learned a new CLI option ``--loglevel``. * The :manual:`cmake(1)` ``-E remove_directory`` command-line tool learned to support removing multiple directories. * The :manual:`cmake(1)` ``-E tar`` tool has been improved: * It now continues adding files to an archive even if some of the files are not readable. This behavior is more consistent with the classic ``tar`` tool. * It now parses all flags, and if an invalid flag was provided, a warning is issued. * It now displays an error if no action flag was specified, along with a list of possible actions: ``t`` (list), ``c`` (create) or ``x`` (extract). * It now supports extracting (``-x``) or listing (``-t``) only specific files or directories. * It now supports Zstandard compression with a ``--zstd`` option. Zstandard was designed to give a compression ratio comparable to that of the DEFLATE (zip) algorithm, but faster, especially for decompression. Commands -------- * The :command:`add_custom_command` and :command:`add_custom_target` commands gained a new ``JOB_POOL`` option that works with the :generator:`Ninja` generator to set the pool variable on the build statement. * The :command:`add_library` command ``ALIAS`` option learned to support import libraries of the ``UNKNOWN`` type. * The :command:`cmake_parse_arguments` command gained an additional ``<prefix>_KEYWORDS_MISSING_VALUES`` output variable to report keyword arguments that were given by the caller with no values. * The :command:`execute_process` command gained a ``COMMAND_ECHO`` option and supporting :variable:`CMAKE_EXECUTE_PROCESS_COMMAND_ECHO` variable to enable echoing of the command-line string before execution. * The :command:`file(INSTALL)` command learned a new argument, ``FOLLOW_SYMLINK_CHAIN``, which can be used to recursively resolve and install symlinks. * :command:`list` learned new sub-commands: ``PREPEND``, ``POP_FRONT`` and ``POP_BACK``. * The :command:`message` command learned new types: ``NOTICE``, ``VERBOSE``, ``DEBUG`` and ``TRACE``. * The :command:`string` learned a new sub-command ``REPEAT``. Variables --------- * The :variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable and corresponding :prop_tgt:`CROSSCOMPILING_EMULATOR` target property learned to support arguments to the emulator. * The :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable was added to tell :command:`find_package` calls to look for a package configuration file first even if a find module is available. * The :variable:`CMAKE_FRAMEWORK` variable was added to initialize the :prop_tgt:`FRAMEWORK` property on all targets. * The :variable:`CMAKE_VS_JUST_MY_CODE_DEBUGGING` variable and :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` target property were added to enable the Just My Code feature of the Visual Studio Debugger when compiling with MSVC cl 19.05 and higher. * The :variable:`CMAKE_MSVC_RUNTIME_LIBRARY` variable and :prop_tgt:`MSVC_RUNTIME_LIBRARY` target property were introduced to select the runtime library used by compilers targeting the MSVC ABI. See policy :policy:`CMP0091`. * The :variable:`CMAKE_PROJECT_INCLUDE` and :variable:`CMAKE_PROJECT_INCLUDE_BEFORE` variables were added to allow injection of custom code at the sites of :command:`project` calls without knowing the project name a priori. Properties ---------- * The :prop_tgt:`ADDITIONAL_CLEAN_FILES` target property and :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property were added. They allow to register additional files that should be removed during the clean stage. * The :prop_tgt:`PUBLIC_HEADER` and :prop_tgt:`PRIVATE_HEADER` properties may now be set on :ref:`Interface Libraries`. The headers specified by those properties can be installed using the :command:`install(TARGETS)` command by passing the ``PUBLIC_HEADER`` and ``PRIVATE_HEADER`` arguments respectively. * The :prop_tgt:`VS_PACKAGE_REFERENCES` target property was added to tell :ref:`Visual Studio Generators` to add references to ``nuget`` packages. * The :prop_tgt:`VS_PROJECT_IMPORT` target property was added to allow managed Visual Studio project files to import external ``.props`` files. * The :prop_tgt:`VS_NO_SOLUTION_DEPLOY` target property was added to tell :ref:`Visual Studio Generators` whether to deploy an artifact to the WinCE or Windows Phone target device. Modules ------- * The :module:`FindBoost` module was reworked to expose a more consistent user experience between its "Config" and "Module" modes and with other find modules in general. * A new imported target ``Boost::headers`` is now defined (same as ``Boost::boost``). * New output variables ``Boost_VERSION_MACRO``, ``Boost_VERSION_MAJOR``, ``Boost_VERSION_MINOR``, ``Boost_VERSION_PATCH``, and ``Boost_VERSION_COUNT`` were added. * The ``QUIET`` argument passed to :command:`find_package` is no longer ignored in config mode. Note that the CMake package shipped with Boost ``1.70.0`` ignores the ``QUIET`` argument passed to :command:`find_package`. This is fixed in the next Boost release. * The input switch ``Boost_DETAILED_FAILURE_MSG`` was removed. * ``Boost_VERSION`` now reports the version in ``x.y.z`` format in module mode. See policy :policy:`CMP0093`. * The :module:`FindCups` module now provides imported targets. * The :module:`FindEnvModules` module was added to use Lua- and TCL-based environment modules in :ref:`CTest Scripts <CTest Script>`. * The :module:`FindGLEW` module now provides an interface more consistent with what upstream GLEW provides in its own CMake package files. * The :module:`FindPkgConfig` now populates :prop_tgt:`INTERFACE_LINK_OPTIONS` property of imported targets with other (non-library) linker flags. * The :module:`FindPostgreSQL` module learned to find debug and release variants separately. * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` gained additional lookup strategies and controls, and a new default. See policy :policy:`CMP0094`. * Modules :module:`FindPython`, :module:`FindPython2` and :module:`FindPython3` gain a new target (respectively ``Python::Module``, ``Python2::Module`` and ``Python3::Module``) which can be used to develop Python modules. * Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` gain capability to control how virtual environments are handled. * The :module:`UseSWIG` module learned to manage alternate library names by passing ``-interface <library_name>`` for ``python`` language or ``-dllimport <library_name>`` for ``CSharp`` language to the ``SWIG`` compiler. Generator Expressions --------------------- * The generator expressions :genex:`$<C_COMPILER_ID>`, :genex:`$<CXX_COMPILER_ID>`, :genex:`$<CUDA_COMPILER_ID>`, :genex:`$<Fortran_COMPILER_ID>`, :genex:`$<COMPILE_LANGUAGE>`, :genex:`$<COMPILE_LANG_AND_ID>`, and :genex:`$<PLATFORM_ID>` learned to support matching one value from a comma-separated list. * The :genex:`$<CUDA_COMPILER_ID:...>` and :genex:`$<CUDA_COMPILER_VERSION:...>` generator expressions were added. * The :genex:`$<COMPILE_LANG_AND_ID:...>` generator expression was introduced to allow specification of compile options for target files based on the :variable:`CMAKE_<LANG>_COMPILER_ID` and :prop_sf:`LANGUAGE` of each source file. * A :genex:`$<FILTER:list,INCLUDE|EXCLUDE,regex>` generator expression has been added. * A :genex:`$<REMOVE_DUPLICATES:list>` generator expression has been added. * The :genex:`$<SHELL_PATH:...>` generator expression gained support for a list of paths. * New ``$<TARGET_FILE*>`` :manual:`generator expressions <cmake-generator-expressions(7)>` were added to retrieve the prefix, base name, and suffix of the file names of various artifacts: * :genex:`$<TARGET_FILE_PREFIX:...>` * :genex:`$<TARGET_FILE_BASE_NAME:...>` * :genex:`$<TARGET_FILE_SUFFIX:...>` * :genex:`$<TARGET_LINKER_FILE_PREFIX:...>` * :genex:`$<TARGET_LINKER_FILE_BASE_NAME:...>` * :genex:`$<TARGET_LINKER_FILE_SUFFIX:...>` * :genex:`$<TARGET_PDB_FILE_BASE_NAME:...>` * The :genex:`$<TARGET_OBJECTS:...>` generator expression is now supported on ``SHARED``, ``STATIC``, ``MODULE`` libraries and executables. CTest ----- * The :command:`ctest_submit` command learned a new option: ``BUILD_ID``. This can be used to store the ID assigned to this build by CDash to a variable. * The :command:`ctest_update` command learned to honor a new variable: :variable:`CTEST_UPDATE_VERSION_OVERRIDE`. This can be used to specify the current version of your source tree rather than using the update command to discover the current version that is checked out. CPack ----- * The :cpack_gen:`CPack IFW Generator` gained a new :variable:`CPACK_IFW_PACKAGE_STYLE_SHEET` variable to customize the installer stylesheet. Deprecated and Removed Features =============================== * The :manual:`cmake-server(7)` mode has been deprecated and will be removed from a future version of CMake. Please port clients to use the :manual:`cmake-file-api(7)` instead. * The :prop_dir:`ADDITIONAL_MAKE_CLEAN_FILES` directory property is now deprecated. Use the :prop_dir:`ADDITIONAL_CLEAN_FILES` directory property instead. * The variable :variable:`CMAKE_AUTOMOC_RELAXED_MODE` is considered deprecated. Support still exists but will be removed in future versions. * The :command:`export(PACKAGE)` command now does nothing unless enabled via :variable:`CMAKE_EXPORT_PACKAGE_REGISTRY`. See policy :policy:`CMP0090`. * The :generator:`Xcode` generator now requires at least Xcode 5. * An explicit deprecation diagnostic was added for policy ``CMP0066`` (``CMP0065`` and below were already deprecated). The :manual:`cmake-policies(7)` manual explains that the OLD behaviors of all policies are deprecated and that projects should port to the NEW behaviors. Other Changes ============= * If a feature specified by :command:`target_compile_features` is available in the compiler's default standard level, CMake 3.14 and below incorrectly added unnecessary ``-std=`` flags that could lower the standard level. This bug has been fixed in CMake 3.15. This behavior change may expose bugs in existing projects that were relying on undocumented implementation details. Specifying compile features only ensures that the compiler runs in a mode that has those features, not that any specific standard level is used or explicit ``-std=`` flag passed. * CMake learned how to compile C++14 with the IBM AIX XL compiler and the SunPro compiler and to compile C++20 with the AppleClang compiler. * With MSVC-like compilers the value of :variable:`CMAKE_<LANG>_FLAGS` no longer contains warning flags like ``/W3`` by default. See policy :policy:`CMP0092`. * IBM Clang-based XL compilers that define ``__ibmxl__`` now use the compiler id ``XLClang`` instead of ``XL``. See policy :policy:`CMP0089`. * The :command:`file(REMOVE)` and :command:`file(REMOVE_RECURSE)` commands were changed to ignore empty arguments with a warning instead of treating them as a relative path and removing the contents of the current directory. Updates ======= Changes made since CMake 3.15.0 include the following. 3.15.1 ------ * In CMake 3.15.0 support for the GNU-like ``Clang`` compiler targeting the MSVC ABI implemented :variable:`CMAKE_CXX_STANDARD` values 98 and 11 using the corresponding ``-std=`` flags. However, these modes do not work with the MSVC standard library. Therefore CMake 3.15.1 passes C++14 standard flags even for C++98 and C++11. This is consistent with MSVC itself which always runs in a mode aware of C++14. * Preliminary Swift support added in 3.15.0 has been updated. 3.15.2 ------ * In CMake 3.15.0 and 3.15.1 the :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG` variable caused the :command:`find_package` command to fail on a missing package even without the ``REQUIRED`` option. This has been fixed. 3.15.3 ------ * ``CrayPrgEnv`` compiler wrapper support has been updated for the 19.06 release of the Cray Programming Environment for which the default linking mode on XC Cray systems is now dynamic instead of static. 3.15.4 ------ * In CMake 3.15.0 through 3.15.3, the :prop_dir:`EXCLUDE_FROM_ALL` directory property was regressed from pre-3.14 behavior and caused targets within the directory to be excluded even from its own "all". This has been fixed. The bug also existed in 3.14.0 through 3.14.6 and is fixed in 3.14.7.