cmake 练习2 出现报错
cmake practical2 step2 error: ‘mysqrt’ was not declared in this scope
在 cmake 官方练习2中出现了 error: 'mysqrt' was not declared in this scope
错误,我对照了步骤看了好几遍,觉得哪里都没有和教程上有出入。但是还是出现了报错。
报错的原因一直是 mysqrt
这个函数没有在有效的区域内定义。
解决
将 tutorial.cxx 文件改为以下内容。
// A simple program that computes the square root of a number
#include <cmath>
#include <iostream>
#include <string>
// TODO 5: Include MathFunctions.h
//#include "MathFunctions.h"
#include "mysqrt.h"
#include "TutorialConfig.h"
int main(int argc, char* argv[])
{
if (argc < 2) {
// report version
std::cout << argv[0] << " Version " << Tutorial_VERSION_MAJOR << "."
<< Tutorial_VERSION_MINOR << std::endl;
std::cout << "Usage: " << argv[0] << " number" << std::endl;
return 1;
}
// convert input to double
const double inputValue = std::stod(argv[1]);
// TODO 6: Replace sqrt with mathfunctions::sqrt
// calculate square root
const double outputValue = mathfunctions::detail::mysqrt(inputValue);
//const double outputValue = mathfunctions::sqrt(inputValue);
std::cout << "The square root of " << inputValue << " is " << outputValue
<< std::endl;
return 0;
}