// a hack square root calculation using simple operations doublemysqrt(double x) { if (x <= 0) { return0; }
double result = x;
// do ten iterations for (int i = 0; i < 10; ++i) { if (result <= 0) { result = 0.1; } double delta = x - (result * result); result = result + 0.5 * delta / result; } return result; }
$ cmake .. -- The C compiler identification is GNU 5.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Configuring done -- Generating done -- Build files have been written to: /home/carl/test/cmake/build
$ make -- Configuring done -- Generating done -- Build files have been written to: /home/carl/test/cmake/build Scanning dependencies of target Tutorial [ 50%] Building C object CMakeFiles/Tutorial.dir/tutorial.c.o [100%] Linking C executable Tutorial [100%] Built target Tutorial
$ ./Tutorial 100 The square root of 100 is 10
设置USE_MYMATH选项为ON,在build目录中输入以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
$ cmake .. -DUSE_MYMATH=ON -- Configuring done -- Generating done -- Build files have been written to: /home/carl/test/cmake/build
$ make Scanning dependencies of target MathFunctions [ 25%] Building C object MathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.c.o [ 50%] Linking C static library libMathFunctions.a [ 50%] Built target MathFunctions Scanning dependencies of target Tutorial [ 75%] Building C object CMakeFiles/Tutorial.dir/tutorial.c.o [100%] Linking C executable Tutorial [100%] Built target Tutorial