我正在尝试创建一个只将库复制到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,以便其他组件可以从那里链接到它。
答案 0 :(得分:0)
不要在-E copy
部分使用相对路径。您可以使用变量CMAKE_SOURCE_DIR
,CMAKE_CURRENT_SOURCE_DIR
,CMAKE_BINARY_DIR
和CMAKE_CURRENT_BINARY_DIR
。