If people want a tower of babel set of languages that can drive CMake, they can do it now. Just write most of your build system in X, tell your users they have to install CMake and X. Then use the powerful language X to generate simple CMake files. (where X is python, tcl, perl, lua, or what ever someone likes.) For the most part the actual build part of CMake is pretty simple:

add_library(foo ...)
add_executable(bar ...)
target_link_libraries(bar foo)

Even find modules could be written in Lua or some other language then called with execute_process. The trick is the people that are building that package will need CMake and X. The original intent of having CMake create it's own language was to have minimal dependencies on CMake itself. To build CMake, you need a C++ compiler and its native build tools. Since CMake was developed to build C++ programs, this seemed like a good dependency. Having to install CMake on the system you want to build on is often a show stopper for people looking at CMake compared to autotools. Having to install CMake, and X, Y, or maybe Z would be even worst.

Lua is interesting since it is small and easy to embed. I am still not sure it is worth the effort. However, the idea of having multiple languages is IMO horrible. Unless all of those languages are built in and delivered with the one CMake binary it will turn CMake projects that use these extra languages into a pain in the neck to build. You will have what I like to call the "easter egg hunt" to build packages. Users will have to install several packages just to build one package.

Also, backwards compatibility is something we take very seriously. If someone picks CMake as a build tool, we have to respect that choice and try our best not to break that project. There are very large projects that have many lines of CMake code in them. People have put a great deal of effort into creating those files. If they don't have the time to re-write in a new language, I don't blame them. I also won't try to force them to do it, by obsoleting the current language. So, we might have two official languages someday, but no more than that.

If you want to use other languages, then use execute_process inside your CMake files, and make sure to tell your uses what they have to install to build your package.

-Bill

-Bill
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to