栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【CMAKE】【Tutorial】04 增加库

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【CMAKE】【Tutorial】04 增加库

在【CMAKE】【Tutorial】03 指定C++标准的程序基础上进行修改。

1. 添加文件夹与文件

在CMake_Tutorial文件夹中添加子目录MathFunctions,并在该目录中添加以下三个文件:

  • CMakeLists.txt
  • MathFunctions.h
  • mysqrt.cpp
    文件内容分别如下:
1.1 CMakeLists.txt
add_library(MathFunctions mysqrt.cpp)
1.2 MathFunctions.h
double mysqrt(double x);
1.3 mysqrt.cpp
#include 
#include "MathFunctions.h"

// a hack square root calculation using simple operations
double mysqrt(double x)
{
  if (x <= 0)
  {
    return 0;
  }

  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;
    std::cout << "Computing sqrt of " << x << " to be " << result << std::endl;
  }
  return result;
}
2. 修改顶层目录中的CMakeLists.txt
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
project(Tutorials)

# 指定C++版本
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 设置版本号
set(Tutorial_VERSION_MAJOR 1)
set(Tutorial_VERSION_MINOR 0)

# 添加配置文件,编译后 TutorialConfig.h.in 将被转化成 TutorialConfig.h 文件,该文件位于项目文件的根目录
configure_file(TutorialConfig.h.in TutorialConfig.h)

# 添加一个名称为 MathFunctions 的库
add_subdirectory(MathFunctions)

add_executable(Tutorial main.cpp)
# 包含特定的头文件查找目录,以便于找到TutorialConfig.h文件
target_include_directories(Tutorial PUBLIC 
                           ${PROJECT_BINARY_DIR}
                           ${PROJECT_SOURCE_DIR}/MathFunctions)
# 添加链接库文件
target_link_libraries(Tutorial PUBLIC MathFunctions)
3. 修改main.cpp文件
#include 
#include "TutorialConfig.h"
#include "MathFunctions.h"

int main(int argc, char** argv)
{
    std::cout << "Hello World!" << std::endl;
    // 版本信息
    std::cout << " Version: " << Tutorial_VERSION_MAJOR << "." << Tutorial_VERSION_MINOR << std::endl;

	// 指定C++标准
	std::cout << "C++ 11: " << std::atof("100") << std::endl;
	// 添加库
	std::cout << "MathFunctions: " << mysqrt(192.1) << std::endl;
    return EXIT_SUCCESS;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号