Optional math static library added.

This commit is contained in:
Kolan Sh 2012-05-22 16:10:48 +04:00
parent 9c40819fe0
commit 5bcce0070a
7 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,30 @@
cmake_minimum_required (VERSION 2.6)
project (Tutorial)
# The version number.
set (Tutorial_VERSION_MAJOR 1)
set (Tutorial_VERSION_MINOR 0)
# configure a header file to pass some of the CMake setting
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
)
# add the binary tree to the search path for include files
# so that we will find TutorialConfig.h
include_directories ("${PROJECT_BINARY_DIR}")
# should we use our own math functions?
option (USE_MYMATH
"Use tutorial provided math implementation" ON)
if (USE_MYMATH)
include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions")
add_subdirectory (MathFunctions)
set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif (USE_MYMATH)
# add the executable
add_executable (Tutorial tutorial.cxx)
target_link_libraries (Tutorial ${EXTRA_LIBS})

View File

@ -0,0 +1 @@
add_library (MathFunctions mysqrt.cxx)

View File

@ -0,0 +1 @@
#include "mysqrt.h"

View File

@ -0,0 +1,7 @@
#include <math.h>
double
mysqrt (double x)
{
return sqrt (x);
}

View File

@ -0,0 +1,2 @@
double
mysqrt (double);

View File

@ -0,0 +1,4 @@
// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
#cmakedefine USE_MYMATH

View File

@ -0,0 +1,32 @@
// A simple program that computes the square root of a number
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "TutorialConfig.h"
#ifdef USE_MYMATH
#include "MathFunctions.h"
#endif
int main (int argc, char *argv[])
{
if (argc < 2)
{
fprintf(stdout,"%s Version %d.%d\n",
argv[0],
Tutorial_VERSION_MAJOR,
Tutorial_VERSION_MINOR);
fprintf(stdout,"Usage: %s number\n",argv[0]);
return 1;
}
double inputValue = atof(argv[1]);
#ifdef USE_MYMATH
puts ("Using mysqrt ()\n");
double outputValue = mysqrt(inputValue);
#else
puts ("Using system sqrt ()\n");
double outputValue = sqrt(inputValue);
#endif
fprintf(stdout,"The square root of %g is %g\n",
inputValue, outputValue);
return 0;
}