跳至内容

Alpsize-01 CMake

使用 CMake 打包

ALPS 使用 CMake(3.18 或更高版本)作为构建系统。CMake 是一个跨平台的软件构建过程管理工具。您可以通过配置文件 CMakeLists.txt 来驱动 cmakemake 编译代码。编写 CMakeLists.txt 通常比手写 Makefile 简单得多。

CMakeLists.txt 由以下几部分组成:头部声明、导入 ALPS 环境、目标依赖描述,以及(可选的)测试定义。 ALPS 库在 ${ALPS_ROOT}/share/alps/ALPSConfig.cmake 处提供了 CMake 配置文件(${ALPS_ROOT} 为 ALPS 的安装前缀,例如 /opt/alps)。引入该文件将设置构建 ALPS 所需的所有配置变量。引入 ${ALPS_ROOT}/share/alps/UseALPS.cmake 则会自动配置使用 ALPS 所需的编译器和链接器选项。以下是一个 CMakeLists.txt 示例。完整的源文件可在 ALPS 仓库 中获取:

cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(alpsize NONE)
 
# find ALPS Library
find_package(ALPS REQUIRED PATHS ${ALPS_ROOT_DIR} $ENV{ALPS_HOME} NO_SYSTEM_ENVIRONMENT_PATH)
message(STATUS "Found ALPS: ${ALPS_ROOT_DIR} (revision: ${ALPS_VERSION})")
include(${ALPS_USE_FILE})
 
# enable C and C++ compilers
enable_language(C CXX)
 
# rule for generating 'hello world' program
add_executable(hello hello.C)
target_link_libraries(hello ${ALPS_LIBRARIES})
add_alps_test(hello)

注意:find_package 中的 NO_SYSTEM_ENVIRONMENT_PATH 选项是必须的,否则系统默认值(如编译器等变量)将覆盖 ALPS 的设置。

运行 CMake

运行 cmake 时,使用 -DALPS_ROOT_DIR 选项指定 ALPS 的安装路径:

$ cmake -DALPS_ROOT_DIR=/path/to/alps /path/to/your/source

或者,通过设置 $ALPS_HOME 环境变量让 CMake 自动找到 ALPS:

$ export ALPS_HOME=/path/to/alps
$ cmake /path/to/your/source
-- Found ALPS: ...
[snip]
-- Configuring done
-- Generating done
-- Build files have been written to: /home/alps/tutorial

CMake 将生成 Makefile。然后运行 make 构建程序:

$ make
[100%] Building CXX object CMakeFiles/hello.dir/hello.C.o
Linking CXX executable hello
[100%] Built target hello
$ ./hello
hello, world

使用 CTest 工具运行测试。CTest 将运行 hello 程序,并将其输出与 hello.op 的内容进行比较:

$ ctest
Test project /home/alps/tutorial
    Start 1: hello
1/1 Test #1: hello ............................   Passed    0.07 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   0.07 sec