如何创建复制库的自定义目标?

时间:2017-05-15 17:29:05

标签: cmake

我正在尝试创建一个只将库复制到LIBRARY_OUTPUT_PATH的自定义目标。以下是我的CMakeLists.txt。

MYCOMPONENT文件夹的内容是mylib.so和CMakeLists.txt。

cmake_minimum_required(VERSION 2.8)
project( MYCOMPONENT )
add_custom_target( MYTARGET
                   COMMAND ${CMAKE_COMMAND} -E copy ./mylib.so ${LIBRARY_OUTPUT_PATH} )

我执行以下操作:

cd MYCOMPFOLDER
mkdir build_debug
cd build_debug
cmake -DLIBRARY_OUTPUT_PATH=<mycompfolderfullpath>/build_debug/bin ..

现在我做了一个build_debug,我得到了:

CMakeCache.txt CMakeFiles cmake_install.cmake Makefile

ls CMakeFiles/
3.5.1                            CMakeTmp           Makefile2
cmake.check_cache                feature_tests.bin  Makefile.cmake
CMakeDirectoryInformation.cmake  feature_tests.c    progress.marks
CMakeOutput.log                  feature_tests.cxx  TargetDirectories.txt
CMakeRuleHashes.txt              MYCOMPONENT.dir

ls CMakeFiles/MYCOMPONENT.dir/
build.make  cmake_clean.cmake  DependInfo.cmake  progress.make

来自build_debug,&#34;找到。 -name mylib.so&#34;是无处可去的,所以当然是&#34;制作MYTARGET&#34;失败。如何让cmake正确处理mylib.so?这是第三方库,我们不构建它,目标是确保它从此文件夹复制到LIBRARY_OUTPUT_PATH,以便其他组件可以从那里链接到它。

1 个答案:

答案 0 :(得分:0)

不要在-E copy部分使用相对路径。您可以使用变量CMAKE_SOURCE_DIRCMAKE_CURRENT_SOURCE_DIRCMAKE_BINARY_DIRCMAKE_CURRENT_BINARY_DIR