CMake 用以管理软件项目的构建过程。

CMakeLists.txt 定义项目的结构、依赖关系和建构指令,然后CMake依此生成适用于特定平台的本地构建系统(Makefiles, VIsual Studio项目文件等)

可以用于

  1. 包含头文件和源文件的项目
  2. 创建、使用静态库、共享库
  3. 依赖外部库的项目

例子:

cmake_minimum_required(VERSION 3.25)
project(rin)

# 设置C++标准版本
set(CMAKE_CXX_STANDARD 17)

# header file
include_directories(${PROJECT_SOURCE_DIR}/include)

# source file
file(GLOB SOURCES "src/*.cpp")

# 添加可执行文件
add_executable(rin ${SOURCES})

cmake -S .. -B BUILD

cmake --build BUILD --config Release

.\\BUILD\\Release\\test_scs.exe
cmake_minimum_required(VERSION 3.10)

project(scs_example C)

set(CMAKE_CXX_STANDARD 17)

# Importing from scs
# scs install dir
set(SCS_INSTALL_DIR "E:/project/Solvers/scs/build/install")
set(CMAKE_PREFIX_PATH ${SCS_INSTALL_DIR})
# scs Package
find_package(scs REQUIRED)

# Adjust MKLROOT and libs as per your MKL installation
if(DEFINED ENV{MKLROOT})
    message(STATUS "MKLROOT is set to $ENV{MKLROOT}")
    set(MKLROOT $ENV{MKLROOT})
else()
    message(FATAL_ERROR "Environment variable MKLROOT is not set. Please set it to your Intel MKL installation path.")
endif()
link_directories(${MKLROOT}/lib)

add_executable(test_scs example.c)

# Using Solver with mkl,scsmkl.lib
target_link_libraries(test_scs PRIVATE scs::scsmkl)