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