博客专栏

EEPW首页>博客> CMake 输出路径的设置 ,当前目录,安装拷贝

CMake 输出路径的设置 ,当前目录,安装拷贝

发布人:电子禅石 时间:2022-11-28 来源:工程师 发布文章

cmake 输出路径

cmake 输出路径通常需要设置一下,这里记录一下:


1.设置可执行文件的输出路径:


SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)


2.静态库 lib 输出路径:


set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)


3.动态库输出路径(注意这个放在最后):


SET_TARGET_PROPERTIES(dllname PROPERTIES RUNTIME_OUTPUT_DIRECTORY ../bin)


4.上面两条语句分别设置了Debug版本和Release版本下库文件的后缀名


set(CMAKE_DEBUG_POSTFIX "_d") set(CMAKE_RELEASE_POSTFIX "_r")


5.设置了Debug版本和Release版本下可执行文件的后缀名


set_target_properties(${TARGET_NAME} PROPERTIES DEBUG_POSTFIX "_d") set_target_properties(${TARGET_NAME} PROPERTIES RELEASE_POSTFIX "_r")


6.设置项目名称:


PROJECT( name )


7.设置链接库名称:


target_link_libraries


例:target_link_libraries(

DealWithMould

${VTK_LIBRARIES}

)


target_link_libraries(myProject hello)

7.可执行文件名,通过指定的源文件列表构建出可执行目标文件:


ADD_EXECUTABLE

ADD_EXECUTABLE(main main.cpp context.cpp patten.cpp patten.hpp )

8. 为生成的target配置安装目录

install(TARGETS MyLib EXPORT MyLibTargets LIBRARY DESTINATION lib # 动态库安装路径 ARCHIVE DESTINATION lib # 静态库安装路径 RUNTIME DESTINATION bin # 可执行文件安装路径 PUBLIC_HEADER DESTINATION include # 头文件安装路径 )

LIBRARY, ARCHIVE, RUNTIME, PUBLIC_HEADER是可选的,可以根据需要进行选择。 DESTINATION后面的路径可以自行制定,根目录默认为CMAKE_INSTALL_PREFIX,可以试用set方法进行指定,如果使用默认值的话,Unix系统的默认值为 /usr/local, Windows的默认值为 c:/Program Files/${PROJECT_NAME}。比如字linux系统下若LIBRARY的安装路径指定为lib,即为/usr/local/lib。所以要安装mymath mymathapp我们可以这样写

————————————————

当前目录
PROJECT_SOURCE_DIR:工程的根目录 PROJECT_BINARY_DIR:运行cmake命令的目录,通常为${PROJECT_SOURCE_DIR}/build PROJECT_NAME:返回通过 project 命令定义的项目名称 CMAKE_CURRENT_SOURCE_DIR:当前处理的 CMakeLists.txt 所在的路径 CMAKE_CURRENT_BINARY_DIR:target 编译目录 CMAKE_CURRENT_LIST_DIR:CMakeLists.txt 的完整路径 EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置 LIBRARY_OUTPUT_PATH:重新定义目标链接库文件的存放位置
安装拷贝
#设置变量 set(OPENCV_DLL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/OpenCV/bin) # 设置输出目录 set(OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../CMakeProjectTestDebug/") set(EXECUTABLE_OUTPUT_PATH "${OUTPUT_PATH}/bin/") set(LIBRARY_OUTPUT_PATH "${OUTPUT_PATH}/lib/") # 拷贝文件到exe所在的目录 # 1 拷贝文件夹里的文件 file(COPY ${OPENCV_DLL_DIR}/ DESTINATION ${EXECUTABLE_OUTPUT_PATH}) # 2 拷贝bin文件 file(COPY ${OPENCV_DLL_DIR} DESTINATION ${EXECUTABLE_OUTPUT_PATH})

file(COPY /opt/fs/lib/libfs.so DESTINATION lib libfs.so)


将所有符号链接和libfoo.so.1.2.3本身安装到lib中

也可以使用安装代替拷贝


install


install用于指定在安装时运行的规则。它可以用来安装很多内容,可以包括目标二进制、动态库、静态库以及文件、目录、脚本等:

————————————————

install(TARGETS ... [...]) install({FILES | PROGRAMS} ... [...]) install(DIRECTORY ... [...]) install(SCRIPT  [...]) install(CODE  [...]) install(EXPORT  [...])

一般复制或文件夹

install(DIRECTORY ${PROJECT_BINARY_DIR}/bin DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)

//将生成的文件夹下内容全部拷贝到,指定目标目录;

原文链接:https://blog.csdn.net/q610098308/article/details/121157418


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

射频卡相关文章:射频卡原理


关键词:cmake

技术专区

关闭