On 21. Jan, 2010, at 16:44 , Mateusz Loskot wrote:

> Michael Wild wrote:
>> On 21. Jan, 2010, at 24:55 , Mateusz Loskot wrote:
>>> Hi,
>>> I'm trying to perform the following checks:
>>> check_function_exists(std::pow HAVE_POW)
>>> or
>>> check_symbol_exists(std::pow cmath HAVE_POW)
>>> but it looks that both macros have troubles with resolving std:: namespace.
>>> The documentation is not very clear about that.
>>> Or I should stick to try_compile based tests?
>>> Best regards,
>> AFAIK check_symbol_exists is used for preprocessor symbols. 
>> check_function_exists looks for C functions, not C++.
> 
> OK, makes sense:
> symbol -> preprocessor
> function -> real function
> 
> Although, for clarity, perhaps check_symbol_exists should be
> called check_macro_exists.

No, as Marcel and I noticed, check_symbol_exists really checks whether that 
symbol exists, be it preprocessor symbol, function or global variable. Really, 
the docs should be updated to clarify this.

> 
> The fact check_function_exists checks C function but not C++ free
> function is a bit confusing. AFAIU, CMake is dedicated to build C++
> source code, so I suppose many users may expect it works
> well for both C and C++ free functions.
> 
> Why it can not work, actually?

Because the module writes a .c file and then compiles it with the C-compiler... 
What one needs is CheckCXXFunctionExists and CheckCXXSymbolExists. Or, 
alternatively, the modules could check the enabled languages and if C++ is 
enabled, write a C++ file (that should also work for C functions/symbols), 
otherwise fall back to plain C.


Michael

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to