cmake –install build 安装路径问题

cmake_minimum_required(VERSION 3.0.0)
project("zzz")

#  在执行cmake --install 命令时 a.txt 被copy到 include文件夹下
install(
    FILES
        a.txt
    DESTINATION
        include
)

Q:
以上是我的cmakelists.txt 文件,我运行cmake -B buildcmake --build buildcmake --install build 这三条命令,我期望a.txt 被安装到build/incldue文件夹下,但是a.txt文件被安装到了/usr/local/include/文件夹下,这是为什么?
A:
你的CMakeLists.txt文件中使用的是相对路径,并且没有指定install命令的PREFIX。因此,CMake默认将文件安装到系统的include目录下。

要将a.txt文件安装到build/include文件夹下,你可以修改CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.0.0)

project("zzz")

install(
    FILES
        a.txt
    DESTINATION
        ${CMAKE_BINARY_DIR}/include
)

这里,${CMAKE_BINARY_DIR}表示build文件夹的根目录。通过使用${CMAKE_BINARY_DIR}/include作为DESTINATION,你将a.txt文件安装到build/include文件夹下。

修改后的CMakeLists.txt文件之后,重新运行CMake和构建命令:

cmake -B build
cmake --build build
cmake --install build

现在,a.txt文件应该会被安装到build/include文件夹下。

Q:
怎么指定install命令的PREFIX
A:
在CMake中,你可以使用CMAKE_INSTALL_PREFIX变量来指定install命令的PREFIX。以下是修改你的CMakeLists.txt文件的方式:

cmake_minimum_required(VERSION 3.0.0)

project("zzz")

# 设置安装目录为 build 目录
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})

install(
    FILES
        a.txt
    DESTINATION
        include
)

在这个例子中,set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}) CMAKE_INSTALL_PREFIX 设置为${CMAKE_BINARY_DIR},即 build 目录。

然后,运行以下命令:

cmake -B build
cmake --build build
cmake --install build

这将安装a.txt文件到build/include目录下。确保在构建之前删除之前的build目录以确保清除旧的构建信息。