本教程将引导您逐步创建和开发一个简单的CMake项目。我们将学习CMake作为构建系统的基础知识,以及用于CMake项目的CLion设置和操作。
注:
本教程使用的示例项目源代码可在GitHub上找到。
CMake是一个元构建系统,它使用名为CMakeLists的脚本来为特定环境(例如,在Unix机器上生成makefiles)生成构建文件。当您在CLion中创建新的CMake项目时,会在项目根目录下自动生成一个CMakeLists.txt文件。
👇点击领取👇 👉C语言知识资料合集
让我们在CLion中创建一个新的CMake项目。
- 从主菜单中选择“File | New Project”。
- 在左侧窗格中选择“C++ Executable”。在本示例中,项目名称为cmake_testapp,选择的语言标准为C++17。
- 我们会得到一个默认项目,包含一个名为main.cpp的源文件和自动生成的根CMakeLists.txt文件,其中包含以下命令:
命令 描述 cmake_minimum_required(VERSION 3.24) 指定CMake的最低要求版本,就像在默认的工具链中设置的一样。在大多数情况下,如果CMake可执行文件没有被有意更改,这将是捆绑的CMake版本。 project(cmake_testapp) 根据我们在项目创建过程中提供的内容定义项目名称。 set(CMAKE_CXX_STANDARD 17) 设置变量CMAKE_CXX_STANDARD的值为17,就像我们在创建项目时选择的一样。 add_executable(cmake_testapp main.cpp) 添加cmake_testapp可执行目标,将从main.cpp构建。我们将在下面进一步介绍目标。 - 在CMake工具窗口中,您可以检查项目加载的进度和状态。要访问它,调用View | Tool Windows | CMake,或在工具窗口栏中切换到它:
注:
如果加载失败,CMake工具窗口将自动打开。
目标是使用CMake脚本构建的可执行文件或库。您可以在单个脚本中定义多个构建目标。
目前,我们的测试项目只有一个构建目标,即cmake_testapp。在第一次加载项目时,CLion会自动添加一个与此目标相关联的运行/调试配置:
单击“Edit Configurations”以查看详细信息。目标名称和可执行文件名称与CMakeLists.txt中指定的相同:
CLion会根据项目的CMake目标自动配置运行/调试设置。这是一个方便的功能,因为它确保运行和调试配置与实际的构建目标匹配。
在某些情况下,您可能需要将新源文件添加到现有CMake目标中。让我们尝试在cmake_testapp目标中添加一个新的源文件。
- 在项目根目录中,创建一个名为utils.cpp的新源文件。将以下内容添加到utils.cpp中:
void printMessage() {
std::cout << "Hello from utils!" << std::endl;
}
- 在CMakeLists.txt文件中,找到与cmake_testapp目标关联的add_executable命令。我们将在此命令中添加utils.cpp源文件。
add_executable(cmake_testapp main.cpp utils.cpp)
- 您的CMakeLists.txt文件现在应如下所示:
cmake_minimum_required(VERSION 3.24)
project(cmake_testapp)
set(CMAKE_CXX_STANDARD 17)
add_executable(cmake_testapp main.cpp utils.cpp)
- 在CMake工具窗口中,单击“Reload Changes”以重新加载项目配置。
您现在已成功将新的utils.cpp文件添加到了cmake_testapp目标中。
在CMake中,您可以定义多个目标,每个目标对应于一个可执行文件或库。让我们尝试添加一个新的库目标。
假设我们希望创建一个名为mylib的静态库,它由两个源文件lib.cpp和lib.h组成。
- 在项目根目录中,创建一个名为lib.cpp的新源文件。将以下内容添加到lib.cpp中:
int add(int a, int b) {
return a + b;
}
- 在项目根目录中,创建一个名为lib.h的新头文件。将以下内容添加到lib.h中:
int add(int a, int b);
- 修改CMakeLists.txt以添加新的库目标。在project()命令下方,添加以下内容:
add_library(mylib STATIC lib.cpp)
target_include_directories(mylib PUBLIC .)
通过add_library命令,我们定义了一个名为mylib的静态库目标,并将lib.cpp添加为其源文件。通过target_include_directories命令,我们指定了包含目录,以便在项目中的其他位置访问lib.h头文件。
- 您的CMakeLists.txt文件现在应如下所示:
cmake_minimum_required(VERSION 3.24)
project(cmake_testapp)
set(CMAKE_CXX_STANDARD 17)
add_executable(cmake_testapp main.cpp utils.cpp)
add_library(mylib STATIC lib.cpp)
target_include_directories(mylib PUBLIC .)
- 在CMake工具窗口中,单击“Reload Changes”以重新加载项目配置。
现在,您已成功添加一个名为mylib的新库目标。
在上面的步骤中,我们多次提到了“重新加载”项目。当您手动编辑CMakeLists.txt文件时,需要通过重新加载来应用更改。让我们总结如何执行此操作:
- 在CMake工具窗口中,单击刷新按钮,以重新加载项目配置:
或者
- 使用File | Reload CMake Project菜单项:
重新加载项目后,CLion将重新解析CMakeLists.txt文件并应用任何更改。
CMake预设是一组用于CMake的命令行选项,允许您在不编辑CMakeLists.txt文件的情况下配置CMake项目。CLion支持CMake预设,并为其提供了一个用户界面。
要在CLion中配置CMake预设,请执行以下步骤:
- 在主菜单中,选择File | Settings (Ctrl+Alt+S)。
- 在设置对话框中,转到Build, Execution, Deployment | CMake。
- 在顶部选项卡中,找到并选择Presets。
- 单击+按钮,然后选择所需的预设。您可以根据需要配置预设选项。
- 单击Apply或OK以保存更改。
此后,您可以使用CMake预设配置CMake项目,而无需手动编辑CMakeLists.txt文件。
CMake构建类型允许您指定不同的构建配置,例如“Debug”和“Release”。不同的构建类型可能具有不同的编译器标志和优化选项。
在CLion中,您可以轻松配置和切换不同的构建类型:
- 单击工具窗口中的构建变体栏:
- 选择所需的构建类型,例如“Debug”或“Release”。
- CLion将自动重新加载项目以应用新的构建类型。
恭喜!您已经完成了这个简明的CMake教程。您学会了如何创建和配置CMake项目,向现有目标添加文件,添加新的构建目标,以及使用CMake预设和不同的构建类型。CMake是一个强大的构建系统,可以帮助您管理复杂的项目和跨平台开发。希望这个教程能够帮助您入门CMake的基础知识,以便在您的项目中更有效地使用它。
如果您想要进一步扩展您的CMake知识和技能,可以尝试在自己的项目中使用CMake,并在实际应用中学习。
热门推荐
- CLion教程-CLion中项目格式
- C语言算法-"搜索二维矩阵"算法问题
- C++教程-详解C++语言中拷贝构造函数
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/65885.html