On 21. Jan, 2010, at 9:56 , Marcel Loose wrote: > On Thu, 2010-01-21 at 06:52 +0100, 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++. Also notice, that > older C++ standard libraries and non-compliant C++ compilers don't use > the namespace std. You might want to have a look at > CMakeBackwardCompatibilityCXX.cmake or the various other modules it > uses. >> >> >> HTH >> >> Michael >> > I thought that check_symbol_exists() was meant to check for the > *declaration* of a symbol (e.g. a function) in a header file; and that > check_function_exists() was meant to check for the *definition* of a > function (i.e. exists as symbol in a library). > > Best regards, > Marcel Loose.
Just checked: check_symbol_exists works for both. E.g. testing for deflateInit in zlib.h (which is a #define) results in the following test code: #include <zlib.h> void cmakeRequireSymbol(int dummy,...){(void)dummy;} int main() { #ifndef deflateInit cmakeRequireSymbol(0,&deflateInit); #endif return 0; } As you can see, the code will compile successfully for both cases. IMHO the documentation should be clarified... 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