Talk:CMake

Latest comment: 2 years ago by Alexander Davronov in topic Functional language

Major features edit

[Removed the following on the theory that it made it too much like advertising:]

  • Configuration files are CMake scripts, which use a programming language specialized to software builds, said by its designers to be simple and compact.
  • Automatic dependency analysis built-in for C, C++, Fortran and Java,
  • Support of SWIG, Qt, FLTK via the CMake scripting language,
  • Built-in support for Microsoft Visual Studio .NET and past Visual Studio versions, including generation of .dsp, .dsw, .sln and .vcproj files,
  • Detection of file content changes using traditional timestamps,
  • Support for parallel builds,
  • Cross-compilation,
  • Global view of all dependencies, using CMake to output a graphviz diagram,
  • Designed from the ground up for cross-platform builds, and known to work on Linux, other POSIX systems (including AIX, *BSD systems, HP-UX, IRIX/SGI, MinGW/MSYS and Solaris), Mac OS X and Windows 95/98/NT/2000/XP,
  • Integrated with Dart, CTest and CPack, a collection of tools for software testing and release.

Mark Foskey 19:40, 23 September 2007 (UTC)Reply

I think some of those are important bits of information, and I added some of them in with references. Vadmium (talk) 04:08, 7 November 2010 (UTC)Reply

Notability issues regarding Andy Cedilnik and Ken Martin. edit

Both of these people have Wiki links pointing to no article. Unless someone is prepared to create articles for them - and not just about their work on CMake - then the links will be removed. Sslaxx (talk) 15:45, 4 August 2009 (UTC)Reply

Duplicates edit

Blender is also listed as using SCons! Is it possible it uses the two? I find it hard to belive... 189.87.149.23 (talk)NeoStrider —Preceding undated comment added 00:12, 3 December 2009 (UTC).Reply

Yes, it is possible, you just have to write both SConstruct and CMakeLists.txt, then you can use either CMake or SCons to build. Spidermario (talk) 13:59, 29 December 2009 (UTC)Reply

Book propaganda edit

Is the specific book link really interesting on the page? Think just the open documentation references are valid in this case. —Preceding unsigned comment added by Guaxinim (talkcontribs) 16:15, 24 February 2010 (UTC)Reply

I've moved it to being a reference, which I believe is reasonable. I'm not a cmake pro though so if there are better references which should replace it then go ahead... --mcld (talk) 21:36, 9 August 2010 (UTC)Reply

Who use it edit

Are you sure, that Conky a SuperTux use cmake? In their last archives is used autotools.--Dundee5 (talk) 14:56, 29 March 2010 (UTC)Reply

SuperTux does have a CMakeLists.txt, at least in its SubVersion repository. However, I didn't find any for Conky. Spidermario (talk) 11:05, 16 April 2010 (UTC)Reply

Conky (software) apparently does. I added a reference to README.cmake in the source code. Vadmium (talk) 04:08, 7 November 2010 (UTC)Reply

permissions from copyright holder edit

The text marked as possible copyright infringement for the CMake entry on Wikipedia.org is available for use in the discussion of CMake as a software application and solution. As a company we have made this text available for use as part of our corporate messaging. The permissions can be found here: http://cmake.org/cmake/project/press_kit.html

Please contact me if further clarification is needed, Niki Russell (niki.russell@kitware.com) —Preceding unsigned comment added by 66.194.253.20 (talk) 17:41, 27 October 2010 (UTC)Reply

It has been over a week since the last communication of the Wikimedia Foundation's OTRS team to the company about this matter (Ticket:2010102710011944, which is viewable only to individuals who have been cleared to read such content by the WMF), and the requested licensing release has not been supplied. Accordingly, we have had no choice but to delete the material. It can be restored if proper licensing is verified in accordance with that communication. --Moonriddengirl (talk) 13:55, 6 November 2010 (UTC)Reply
Seven years later, could somebody please remove the huge historic OTRS blurb on the top of this page? My WP:BOLD resources are somewhat limited without logging in. –89.15.236.224 (talk) 21:12, 7 October 2017 (UTC)Reply

comparison with GNU make? edit

Seeing as GNU make and autotools are the main "competitor", shouldn't this page at least try to compare them a bit? — Preceding unsigned comment added by 129.177.13.200 (talk) 13:36, 17 August 2011 (UTC)Reply

Confusing make(1) with GNU autotools. The latter is the competitor. 2001:470:600D:DEAD:0:0:0:42 (talk) 00:02, 1 September 2012 (UTC)Reply

They are linked from the article. More would be undue weight, IMHO. -- DevSolar (talk) 11:29, 22 April 2013 (UTC)Reply

I get the idea that cmake is a tool that creates Makefiles in cases where a novice doesn't actually know how to fully use the make tool. Appears to be another layer on a wedding cake to make programming easier for novices at the expense of a higher risk of missing dependencies and reliability of compilation.

Notable applications edit

The § Notable applications that use CMake section lists 70+ applications, most without references. Do we really want to keep adding stuff to that section until Wikipedia runs out of space and explodes? It looks more like a 'Oh, I know another app that uses it that's not yet listed' list. Make (software) doesn't feel the need to list everything... --82.136.210.153 (talk) 20:29, 1 February 2015 (UTC)Reply

I think this whole article is just an advertisement. Really, why does an encyclopedia need to list features of every software package? Just leave cmake in the build generation tools article and delete this ad. — Preceding unsigned comment added by 2620:0:E50:7016:99C0:7176:CC20:28EF (talk) 15:58, 11 March 2016 (UTC)Reply

Agree. The section doesn't serve any encyclopaedic purpose, I have removed it. Liam McM 16:12, 22 April 2019 (UTC)Reply

External links modified edit

Hello fellow Wikipedians,

I have just modified one external link on CMake. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at {{Sourcecheck}}).

 Y An editor has reviewed this edit and fixed any errors that were found.

  • If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
  • If you found an error with any archives or the URLs themselves, you can fix them with this tool.

Cheers.—InternetArchiveBot (Report bug) 07:44, 12 November 2016 (UTC)Reply

Proposal to merge from CPack edit

CPack is almost a stub. I'm not sure if it meets the notability criteria as a standalone article, with only one reference. Should it be merged to this subject article? 2001:2003:54FA:2751:0:0:0:1 (talk) 03:56, 5 October 2017 (UTC)Reply

It's no stub, it's a deletion candidate with multiple issues, actually more issues than lines.  IOW, yes, go for it. –89.15.236.224 (talk) 21:05, 7 October 2017 (UTC)Reply
Certainly merge a bit of it; a mention might be worth it. But it doesn't need its own page. peterl (talk) 10:32, 22 November 2017 (UTC)Reply

Code & keywords highlighting edit

@Mwtoews: I know about {{code}} but I want few commands to be highlighted in language-wise way. Why not? AXONOV (talk) 11:02, 3 November 2020 (UTC)Reply

@Alexander Davronov: FYI, inline {{code}} can take a |lang=cmake parameter to achieve what you want. However, I found that add_executable(...) is more consistent and readable than add_executable(...), so I picked the former. So why colourise these two inline words? I would normally choose to inline syntax highlight longer code segments to help distinguish between (e.g.) operators, variables, etc., but this consideration doesn't really apply to the two words. +mt 21:55, 3 November 2020 (UTC)Reply
@+m: Both tag and template are fine and are subject to personal preferences which is in turn subject to consensus. Those two words are distinguished the best by using colors as it's not a coincidence that code highlighting was invented. I totally disagree over that plain white/black is consistent or readable. Especially when the background is overburdened by bunch of unhighlighted code words. AXONOV (talk) 07:36, 4 November 2020 (UTC)Reply

@Alexander Davronov: What did you mean when you wrote "the background is overburdened by bunch of unhighlighted code words"?  Which words overburden which background?
 Black Walnut talk 13:36, 30 January 2021 (UTC)Reply

@Black Walnut: Hi, everything is fixed now. Never mind. Feel free to close this conversation. Thanks for your attention. AXONOV (talk) 20:34, 10 February 2021 (UTC)Reply

Build-system generator VS build-system-configuration generator edit

@Peterl: .. While it does configuration, I think it's clearer to say build-system generator

Hi! I think we should favor the «build-system-configuration generator» as per official documentation:

«... A CMake Generator is responsible for writing the input files for a native build system.»[1]

The current version is confusing because it makes you to think that it completely replaces tools like gnu make etc. AXONOV (talk) 09:53, 15 March 2021 (UTC)Reply

References

Yes, I agree it's important that it's made clear that CMake is not a build system, but rather is used to create the files that a build system would use. But doesn't the line in the lead "CMake is not a build system but rather it's a build-system generator." cover that? I found "build-system-configuration generator" too wordy, and in my mind was implying more around a "configuration generator" rather than a "build-system generator". Maybe changing the wording of "CMake is not a build system but rather it's a build-system generator." to something more like ""CMake is not a build system but rather it generates another system's build files"? peterl (talk) 17:13, 15 March 2021 (UTC)Reply
@Peterl: Yeah, it would be nice to make it clear this way. Feel free to make changes. AXONOV (talk) 17:39, 15 March 2021 (UTC)Reply
Done peterl (talk) 02:28, 16 March 2021 (UTC)Reply

Functional language edit

03:01, May 26, 2021 - «CMake is definitely not functional. Having a function keyword does not make something functionalFrom the functional programming article: "In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map values to other values, rather than a sequence of imperative statements which update the running state of the program."»

@188.156.234.35: The CMake's language is certainly functional because it's possible to wrap different expressions into a functions (including other's functions calls). That's exactly what functional (procedural) programming is. The way data is passed in/out doesn't automatically classify it in a different way. I've seen thousands programs written by functions that basically change only global state of externally declared variables and no way I could say they aren't functional. --AXONOV (talk) 10:13, 2 July 2021 (UTC)Reply
Note there is a clear distinction between "functional programming" and writing functions. A programming language is not a functional language purely by virtue of being able to write functions. Note Functional programming makes this clear: 1. by the lead oppositional link to "subroutine-oriented programming", and 2. in the whole section Functional programming#Comparison to imperative programming. I'm confused when you say " functional (procedural)" as these two paradigms are not the same. I do note they both have functions,. I haven't seen any examples of CMake functions as a First-class function. I have never seen that "the language supports passing functions as arguments to other functions, returning them as the values from other functions, and assigning them to variables or storing them in data structures" (although I'd be excited to see such examples). Please show some examples where CMake's language is in fact a "functional language", and not one that just has functions. peterl (talk) 19:21, 3 July 2021 (UTC)Reply
@Peterl: I've reverted back your edit (18:02, July 5, 2021). Unless there are better sources let's agree it's simply imperative. CMake obviously isn't full fledged programming language. Regards. AXONOV (talk) 18:05, 5 July 2021 (UTC)Reply
@Alexander Davronov:. Thanks for this change. I agree with your edit. I agree CMake language is imperative. Note that I was not the editor that added "functional language", and was arguing against it. peterl (talk) 23:35, 5 July 2021 (UTC)Reply
@Peterl: Sorry. My mistake. It was IP's (188.156.234.35:) one. Cheers. AXONOV (talk) 06:00, 6 July 2021 (UTC)Reply