[CMake] Re: Parsing cmake command line parameters

Gonzalo Garramuño ggarra at advancedsl.com.ar
Wed Dec 19 01:52:19 EST 2007


Alexander Neundorf wrote:
> Yes.
> In KDE we have the macro MACRO_OPTIONAL_FIND_PACKAGE(), which adds an option 
> around the find_package() call:
> http://websvn.kde.org/trunk/KDE/kdelibs/cmake/modules/MacroOptionalFindPackage.cmake?revision=520790&view=markup
> 
> Beside that, it is really just a matter of syntax whether you do 
> --enable-build-this
> or -DENABLE_BUILD_THIS=TRUE

No, it isn't *just* a matter of syntax (which is also horrible, btw). 
It is also a matter of documentation.  -DENABLE_BUILD_THIS is documented 
nowhere.  configure --enable-build-this is documented if you run it 
without any flag.

>> But... what if we have this extreme case?
>>
>> IF("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
>>       add_command_line_parameter(whatever)
>> ENDIF()
>>

So?  You don't get the option if you don't run a debug build.  As simple 
as that.  A better syntax for add_option would be:

add_option( NAME TYPE HELP [OPTS] )

       with OPTS being:
	  CONFIGURATION "Debug"
	  REQUIRED      "someotheroption"

That avoids the need for if-thens.

> 
> I have (currently) two ideas:
> either a special file, e.g. CMakeCustomArgs.txt, which in some way sets up the 
> custom command line parameters.
> 

Yuck!

> Or have a cmake modules, which handles this stuff, and which also creates a 
> custom target "help-args" or something like that, which prints the available 
> args. This would not be available before cmake has successfully run.
> 

Yuck! Why wouldn't it be available?  Have you guys used premake at all? 
  The premake.lua is ALWAYS read.  If no parameter is passed, there's a 
dry run of the file, and help with options get spit.
It is gorgeous.
Sure, lua runs 10 times faster than the cmake language does, but that's 
a different story.


-- 
Gonzalo Garramuño
ggarra at advancedsl.com.ar

AMD4400 - ASUS48N-E
GeForce7300GT
Xubuntu Gutsy


More information about the CMake mailing list