Talk:CMake
This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||||||||||||||||||
|
An email has been received at VRTS concerning some or all of the text on this page, and can be read by users with a VRTS account.
However, the message was not sufficient to confirm permission for the text. This may, among other reasons, be because there was no explicit release under a free license, or the email address that the permission came from is not associated with the location where the content was originally published. For an update on the issue, please contact the user who added this template to the page, someone else with a VRTS account, or the VRT noticeboard. If a valid permission is not provided within 30 days of the first response by a VRT volunteer, the text will be deleted. |
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)
- 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)
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)
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).
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)
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 (talk • contribs) 16:15, 24 February 2010 (UTC)
- 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)
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)
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)
- Conky (software) apparently does. I added a reference to README.cmake in the source code. Vadmium (talk) 04:08, 7 November 2010 (UTC)
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)
- 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)
- 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)
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)
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)
- They are linked from the article. More would be undue weight, IMHO. -- DevSolar (talk) 11:29, 22 April 2013 (UTC)
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)
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)
- Agree. The section doesn't serve any encyclopaedic purpose, I have removed it. Liam McM 16:12, 22 April 2019 (UTC)
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:
- Added archive https://web.archive.org/web/20100314045806/http://eris.liralab.it:80/wiki/Manual to http://eris.liralab.it/wiki/Manual#Six._Software.2C_Compiling_YARP_and_iCub
When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at {{Sourcecheck}}
).
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)
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)
- 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)
- 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)
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)
- @Alexander Davronov: FYI, inline {{code}} can take a
|lang=cmake
parameter to achieve what you want. However, I found thatadd_executable(...)
is more consistent and readable thanadd_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)- @+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)
@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)
- @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)
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:
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)«... A CMake Generator is responsible for writing the input files for a native build system.»[1]
- 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)
- @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)
- Done peterl (talk) 02:28, 16 March 2021 (UTC)
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)
- 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)
- @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)
- @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)
- @Peterl: Sorry. My mistake. It was IP's (188.156.234.35:) one. Cheers. AXONOV (talk) ⚑ 06:00, 6 July 2021 (UTC)
- @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)
- @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)
- 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)
Changed short desc
[edit]Was: "Cross-platform compiler-independent build system generator"
Changed to: "Cross-platform build tool for configuring platform-specific builds"
CMake supports various compilers, but not all or any. Mostly it's for C++, but also some other languages. Too much details to include in short-desc, so just leave compiler-independent out.
It does not generate a build system. A build system is one or more build tools. cmake generates config files for a build tool (on the host platform) which can then be used to actually build. Together, cmake and that other tool are two tools of the build system for that software (on that platform). There may be other tools involved as well.
It's a tool that allows for defining how to build software in a platform-independent way by generating config files for other build tools that will run in a particular context (platform). Stevebroshar (talk) 17:55, 22 November 2024 (UTC)
Packaging system
[edit]WRT "Even though CMake is not a package manager, it provides basic modules (see CPack) functions for installing binaries and package information declared by the CMakeLists.txt script to be used by consumer CMake projects. The package may also be packed into an archive file for package manager or installer supported by a target platform. Third-party packages may also be imported via configured CMake files which are either provided by the same third-party or created manually"
What does all that mean? It starts by saying CMake is not something. Say what it is; not what it's not. So confusing.
Is this about consuming packages at build-time? or building a package with generated files?
It says "it provides basic modules (see CPack) functions..." What is a modules functions?
"The package may also be packed into an archive file". Also? What is the also referring to?
"for package manager or installer" huh? what package manager? what installer? Stevebroshar (talk) 13:53, 1 December 2024 (UTC)
- C-Class Computing articles
- Low-importance Computing articles
- C-Class software articles
- Low-importance software articles
- C-Class software articles of Low-importance
- All Software articles
- C-Class Free and open-source software articles
- Mid-importance Free and open-source software articles
- C-Class Free and open-source software articles of Mid-importance
- All Free and open-source software articles
- All Computing articles
- C-Class Linux articles
- Low-importance Linux articles
- WikiProject Linux articles
- Wikipedia files failed VRTS verification
- Wikipedia pages with unconfirmed permission received by VRT
- Wikipedia pages with unconfirmed permission received by VRT as of April 2015
- Wikipedia pages with unconfirmed permission received by VRT by date
- Wikipedia pages with unconfirmed permission received by VRT by ticket date