CMake make install失败,“文件INSTALL找不到<myfile>”</myfile>

时间:2014-08-12 19:48:23

标签: cmake

我有以下项目结构

MyProject
CMakeLists.txt
\SubProject1
\SubProject1\CMakeLists.txt
\SubProject2
\SubProject2\CMakeLists.txt

编译二进制文件工作正常我只使用ADD_SUBDIRECTORY(SubProject1)等。 每个子项目的配置基本上都是SET(EXECUTABLE_OUTPUT_PATH ../ Bin)

所以从MyProject Dir我创建一个Build目录

mkdir Build
cd Build
cmake ..
make install

我的二进制文件现在位于MyProject / Build / Bin / binaryname

但安装目标失败

当我尝试使用cmake DEB安装程序

INSTALL(FILES Bin/binaryname DESTINATION /opt/myproject/bin)

它失败了,因为cmake搜索我的项目根目录中的路径(由于我使用cmake ..最有可能)

因此cmake尝试使用MyProject / Bin / binaryname

而不是在当前工作目录中查找Bin / binaryname

我该如何解决这个问题? ../Bin/binary等没有工作 - 我不想硬编码&#34; Build / Bin / binary&#34;进入cmake - 因为构建的目录可以自由选择

编辑:这是一个精简的SubProject1 CMakeList.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
file(GLOB_RECURSE SOURCES "Source/*.cpp")
INCLUDE_DIRECTORIES("Include")
get_property(inc_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
ADD_EXECUTABLE(mybinary ${SOURCES})

IF(UNIX)
ADD_DEFINITIONS(-fPIC)
ENDIF(UNIX)

1 个答案:

答案 0 :(得分:1)

CMake不支持从子目录中定义的目标进行安装。

如果我想从我的构建目录中添加文件,我必须更改

安装(文件Bin / binaryname DESTINATION / opt / myproject / bin)

INSTALL(FILES $ {CMAKE_CURRENT_BINARY_DIR} / Bin / binaryname DESTINATION / opt / myproject / bin)