我有以下项目结构
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等没有工作 - 我不想硬编码" Build / Bin / binary"进入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)
答案 0 :(得分:1)
CMake不支持从子目录中定义的目标进行安装。
如果我想从我的构建目录中添加文件,我必须更改
安装(文件Bin / binaryname DESTINATION / opt / myproject / bin)
到
INSTALL(FILES $ {CMAKE_CURRENT_BINARY_DIR} / Bin / binaryname DESTINATION / opt / myproject / bin)