The “try_compile()” command source file signature now honors configuration-specific flags (e.g. “CMAKE_<LANG>_FLAGS_DEBUG”) in the generated test project. Previously only the default such flags for the current toolchain were used. See policy “CMP0066”.

“Toolchain files” may now set “CMAKE_EXE_LINKER_FLAGS_INIT”, “CMAKE_SHARED_LINKER_FLAGS_INIT”, and “CMAKE_MODULE_LINKER_FLAGS_INIT” variables to initialize the “CMAKE_EXE_LINKER_FLAGS”, “CMAKE_SHARED_LINKER_FLAGS”, and “CMAKE_MODULE_LINKER_FLAGS” cache entries the first time a language is enabled in a build tree.

CTest now supports test fixtures through the new “FIXTURES_SETUP”, “FIXTURES_CLEANUP” and “FIXTURES_REQUIRED” test properties. When using regular expressions or “–rerun-failed” to limit the tests to be run, a fixture’s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture.

We no longer provide Linux i386 binaries for download from “cmake.org” for new versions of CMake.

Vim support files “cmake-indent.vim”, “cmake-syntax.vim”, and “cmake-help.vim” have been removed in favor of the files now provided from the vim-cmake-syntax project.

Support for building CMake itself with some compilers was dropped:

Visual Studio 7.1 and 2005 — superseded by VS 2008 and above

MinGW.org mingw32 — superseded by MSYS2 mingw32 and mingw64

CMake still supports generating build systems for other projects using these compilers.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

CMake3.7Release Notes

***********************

Changes made since CMake3.6include the following.

NewFeatures

============

Platforms

---------

*CMake now supports Cross Compiling forAndroid with simple

toolchain files.

*The Clang compiler isnow supported on AIX.

Generators

----------

*The"Ninja"generator learned toconditionally support Fortran

when usinga"ninja"tool that has the necessary features.See

generator documentation fordetails.

*The"Ninja"generator learned toproduce phony targets of the form

"sub/dir/{test,install,package}"todrive the build ofa

subdirectory installation,test orpackaging target.Thisis

equivalent to"cd sub/dir; make {test,install,package}"with

Makefile Generators.

*The"Visual Studio 15"generator was added.Thisisexperimental

andbased on Preview4because thisversion of VS has notbeen

released.

*Visual Studio Generators forVS2010andabove learned toplace

".natvis"source files into VS project files properly.

*The"Xcode"generator's rudimentary Swift language support learned

to honor a new "CMAKE_Swift_LANGUAGE_VERSION" variable to tell Xcode

what version of Swift is used by the source.

* The "CodeLite" generator gained a new "CMAKE_CODELITE_USE_TARGETS"

option to change project creation from projects to targets.

Commands

--------

* The "add_custom_command()" command gained a new "DEPFILE" option

that works with the "Ninja" generator to provide implicit dependency

information to the build tool.

* The "cmake_parse_arguments()" command gained a new "PARSE_ARGV"

mode to read arguments directly from "ARGC" and "ARGV#" variables

inside a "function()" body.

* The "export()" command gained an "ANDROID_MK" option to generate

"Android.mk" files referencing CMake-built libraries as prebuilts

for the Android NDK build system.

* The "file(DOWNLOAD)" and "file(UPLOAD)" commands gained

"HTTPHEADER <HTTP-header>" and "USERPWD <username>:<password>"

options.

* The "find_library()" and "find_package()" commands learned to

search in "lib32/" directories when the build targets a 32-bit

architecture. See the "FIND_LIBRARY_USE_LIB32_PATHS" global

property.

* The "find_package()" command gained the possibility of sorting

compatible libraries by "NAME" or by "NATURAL" sorting by setting

the two new variables "CMAKE_FIND_PACKAGE_SORT_ORDER" and

"CMAKE_FIND_PACKAGE_SORT_DIRECTION".

* The "if()" command gained new boolean comparison operations

"LESS_EQUAL", "GREATER_EQUAL", "STRLESS_EQUAL", "STRGREATER_EQUAL",

"VERSION_LESS_EQUAL", and "VERSION_GREATER_EQUAL".

* The "install()" command gained an "EXPORT_ANDROID_MK" subcommand

to install "Android.mk" files referencing installed libraries as

prebuilts for the Android NDK build system.

* The "string(TIMESTAMP)" and "file(TIMESTAMP)" commands gained

support for the "%a" and "%b" placeholders. These are the

abbreviated weekday and month names.

* The "try_compile()" command source file signature now honors

configuration-specific flags (e.g. "CMAKE_<LANG>_FLAGS_DEBUG") in

the generated test project. Previously only the default such flags

for the current toolchain were used. See policy "CMP0066".

Variables

---------

* Variable "CMAKE_FIND_PACKAGE_SORT_ORDER" was added to control the

sorting mode of the "find_package()" command.

* Variable "CMAKE_FIND_PACKAGE_SORT_DIRECTION" was added to control

the sorting direction the "find_package()" command.

* "Toolchain files" may now set a "CMAKE_<LANG>_FLAGS_INIT" variable

to initialize the "CMAKE_<LANG>_FLAGS" cache entry the first time a

language is enabled in a build tree.

* "Toolchain files" may now set "CMAKE_EXE_LINKER_FLAGS_INIT",

"CMAKE_SHARED_LINKER_FLAGS_INIT", and

"CMAKE_MODULE_LINKER_FLAGS_INIT" variables to initialize the

"CMAKE_EXE_LINKER_FLAGS", "CMAKE_SHARED_LINKER_FLAGS", and

"CMAKE_MODULE_LINKER_FLAGS" cache entries the first time a language

is enabled in a build tree.

Properties

----------

* On Apple platforms the "BUNDLE_EXTENSION" target property now also

applies to Frameworks and App Bundles.

* A "BINARY_DIR" directory property was added to get the absolute

path to the binary directory corresponding to the source directory

on which the property is read.

* A "BUILDSYSTEM_TARGETS" directory property was added to get the

list of logical buildsystem target names added by the project in a

directory.

* A "LINK_WHAT_YOU_USE" target property and supporting

"CMAKE_LINK_WHAT_YOU_USE" variable were introduced to detect (on

UNIX) shared libraries that are linked but not needed by running

"ldd -r -u".

* A "SOURCE_DIR" directory property was added to get the absolute

path to the source directory associated with a directory.

* A "SUBDIRECTORIES" directory property was added to get the list of

subdirectories added by a project in a directory.

* A "VS_SDK_REFERENCES" target property was added to tell Visual

Studio Generators to reference the named SDKs.

* A "VS_TOOL_OVERRIDE" source file property was created to tell

Visual Studio Generators what tool to use for a source file.

* The "WINDOWS_EXPORT_ALL_SYMBOLS" target property now applies to

executable targets with the "ENABLE_EXPORTS" property set.

* A "XCODE_FILE_ATTRIBUTES" source file property was added to tell

the "Xcode" generator to generate custom content in the Xcode

project attributes for the file.

Modules

-------

* An "AndroidTestUtilities" module was added to manage transfer of

test data to an Android device.

* The "CheckFortranSourceCompiles" module macro

"CHECK_Fortran_SOURCE_COMPILES" gained a "SRC_EXT" option to specify

a custom test Fortran source file extension.

* The "ExternalProject" module gained "HTTP_USERNAME" and

"HTTP_PASSWORD" options to set http download credentials.

* The "ExternalProject" module gained a "HTTP_HEADER" option to add

http download headers.

* The "FindBISON" module "BISON_TARGET" macro learned a new

"REPORT_FILE" option to specify the bison "--report-file=" option.

* The "FindBZip2" module now provides imported targets.

* A "FindICU" module was introduced to find the International

Components for Unicode (ICU) libraries and programs.

* The "FindMatlab" module learned to find the SIMULINK and MAT components.