Сообщение Re[6]: cmake - детектируем математические функции из math.h от 02.05.2015 20:26
Изменено 02.05.2015 20:40 andyp
Здравствуйте, MTD, Вы писали:
MTD>А ты как ищешь?
Да стандарно, как подглядел у других. Пробовал CHECK_CXX_SYMBOL_EXISTS, CHECK_SYMBOL_EXISTS, CHECK_FUNCTION_EXISTS. Превые два варианта, на сколько понимаю, должны пытаться что-то покомпилять, третий — полинковать с тестовой программкой. Не великий знаток cmake, поэтому больше ничего на ум не приходит.
Т.е пишу в cmakelists.txt:
set(CMAKE_REQUIRED_LIBRARIES m) #это, на сколько понимаю, для gcc нужно
include (CheckFunctionExists)
CHECK_FUNCTION_EXISTS ( asinh HAVE_ASINH )
Ну или
include(CheckCXXSymbolExists)
CHECK_CXX_SYMBOL_EXISTS(asinh, cmath, HAVE_ASINH)
или
include(CheckSymbolExists)
CHECK_SYMBOL_EXISTS(asinh, math.h, HAVE_ASINH)
И все это для msvc 2013 фейлится. Но asinh в либе есть.
MTD>А ты как ищешь?
Да стандарно, как подглядел у других. Пробовал CHECK_CXX_SYMBOL_EXISTS, CHECK_SYMBOL_EXISTS, CHECK_FUNCTION_EXISTS. Превые два варианта, на сколько понимаю, должны пытаться что-то покомпилять, третий — полинковать с тестовой программкой. Не великий знаток cmake, поэтому больше ничего на ум не приходит.
Т.е пишу в cmakelists.txt:
set(CMAKE_REQUIRED_LIBRARIES m) #это, на сколько понимаю, для gcc нужно
include (CheckFunctionExists)
CHECK_FUNCTION_EXISTS ( asinh HAVE_ASINH )
Ну или
include(CheckCXXSymbolExists)
CHECK_CXX_SYMBOL_EXISTS(asinh, cmath, HAVE_ASINH)
или
include(CheckSymbolExists)
CHECK_SYMBOL_EXISTS(asinh, math.h, HAVE_ASINH)
И все это для msvc 2013 фейлится. Но asinh в либе есть.
Re[6]: cmake - детектируем математические функции из math.h
Здравствуйте, MTD, Вы писали:
MTD>А ты как ищешь?
Да стандарно, как подглядел у других. Пробовал CHECK_CXX_SYMBOL_EXISTS, CHECK_SYMBOL_EXISTS, CHECK_FUNCTION_EXISTS. Превые два варианта, на сколько понимаю, должны пытаться что-то покомпилять, третий — полинковать с тестовой программкой. Не великий знаток cmake, поэтому больше ничего на ум не приходит.
Т.е пишу в cmakelists.txt:
set(CMAKE_REQUIRED_LIBRARIES m) #это, на сколько понимаю, для gcc нужно
include (CheckFunctionExists)
CHECK_FUNCTION_EXISTS ( asinh HAVE_ASINH )
Ну или
include(CheckCXXSymbolExists)
CHECK_CXX_SYMBOL_EXISTS(asinh, cmath, HAVE_ASINH)
или
include(CheckSymbolExists)
CHECK_SYMBOL_EXISTS(asinh, math.h, HAVE_ASINH)
И все это для msvc 2013 фейлится. Но asinh в либе есть. Есть он и в хидерах:
_GENERIC_MATH1(asinh, _CRTSPECIAL) //хидер xtgmath.h, определение видно, когда инклюдишь math.h
MTD>А ты как ищешь?
Да стандарно, как подглядел у других. Пробовал CHECK_CXX_SYMBOL_EXISTS, CHECK_SYMBOL_EXISTS, CHECK_FUNCTION_EXISTS. Превые два варианта, на сколько понимаю, должны пытаться что-то покомпилять, третий — полинковать с тестовой программкой. Не великий знаток cmake, поэтому больше ничего на ум не приходит.
Т.е пишу в cmakelists.txt:
set(CMAKE_REQUIRED_LIBRARIES m) #это, на сколько понимаю, для gcc нужно
include (CheckFunctionExists)
CHECK_FUNCTION_EXISTS ( asinh HAVE_ASINH )
Ну или
include(CheckCXXSymbolExists)
CHECK_CXX_SYMBOL_EXISTS(asinh, cmath, HAVE_ASINH)
или
include(CheckSymbolExists)
CHECK_SYMBOL_EXISTS(asinh, math.h, HAVE_ASINH)
И все это для msvc 2013 фейлится. Но asinh в либе есть. Есть он и в хидерах:
_GENERIC_MATH1(asinh, _CRTSPECIAL) //хидер xtgmath.h, определение видно, когда инклюдишь math.h