[CMake] OS/Compiler Versioning for External Libs
Brian Hone
brian.hone at baesystems.com
Wed Jan 12 10:48:19 EST 2005
Hi Brad -
I'm working on such a C program, based on the information at:
http://predef.sourceforge.net/prearch.html
Do you think it would make sense to integrate compiler version as a
command? It doesn't look to hard to implement a new cmCommand.
Brian
Brad King wrote:
> Brian Hone wrote:
>
>> Now I need to set up external dependencies. Unfortunately, we
>> support several OS's + compilers. Is there a right way to handle this?
>>
>> For instance, let's say I have library foo. I need to be able to
>> link against:
>>
>> somedir/solaris-gcc-3.2.2/lib/libfoo.so and
>> somedir/solaris-gcc-3.2.2/inc
>> or
>> somedir/solaris-cc/lib/libfoo.so
>> or
>> somedir/linux-gcc-3.3.3/lib/libfoo.so
>> etc.
>>
>> My thinking is to try to grab the system/compiler version and put it
>> into the link and include dirs, but I can't figure out how to get
>> compiler version, only compiler name. Or am I thinking about this wrong?
>
>
> This approach should work pretty well, but I have not seen it done
> before with CMake. There is no standard way to get the compiler
> version from CMake. Since there is no standard flag to get the
> version of a compiler, I usually do it by writing a small source file
> that uses the preprocessor to get the version:
>
> #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
> printf("gcc-%d.%d.%d", __GNUC__,
> __GNUC_MINOR__, __GNUC_PATCH_LEVEL__);
> #elif ...
> #endif
>
> Then use the TRY_RUN command to get the output of the program.
>
> I've considered creating a standard version of this kind of program to
> include with CMake that has knowledge of many compilers, but it is not
> a high priority right now.
>
> -Brad
>
>
More information about the CMake
mailing list