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 build
,cmake --build build
和cmake --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目录以确保清除旧的构建信息。