我们如何从主CMakeLists.txt文件引用外部cmake文件?

问题描述

比方说,我有一些与protobuf相关的cmake代码,它是一个驻留在 CMakeLists.pro 文件中的库,我需要将此库包含为外部文件配置。该怎么做?

解决方法

我认为这个问题在问如何制作cmake模块。 IE,您有帮助程序代码,并希望使其易于使用。

一个普通的顶层项目有一个顶层cmake文件夹。这是一个示例。

  • cmake
  • 测试
  • src
  • .gitignore
  • CMakeLists.txt
  • README.md

在cmake文件夹中,您有一个名为foo.cmake的cmake模块。 (使文件以.cmake文件扩展名结尾很重要)

无论如何,这就是你的foo.cmake的样子

# Include guards need at least cmake 3.10
include_guard() # Good practice to use an include_guard()

function(bar)
...
endfunction()

现在在您的主要cmakelist中,您如何称呼此函数?很简单。

cmake_minimum_required(VERSION 3.18)

# Add the cmake folder to the cmake module path,this makes it easier to include files
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
# Include foo.cmake
include(foo)

# Call the bar function you defined in foo.cmake
bar()

这就是从主CMakeLists.txt引用外部cmake文件的方式

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...