博客專(zhuān)欄

EEPW首頁(yè) > 博客 > CMake 輸出路徑的設(shè)置 ,當(dāng)前目錄,安裝拷貝

CMake 輸出路徑的設(shè)置 ,當(dāng)前目錄,安裝拷貝

發(fā)布人:電子禪石 時(shí)間:2022-11-28 來(lái)源:工程師 發(fā)布文章

cmake 輸出路徑

cmake 輸出路徑通常需要設(shè)置一下,這里記錄一下:


1.設(shè)置可執(zhí)行文件的輸出路徑:


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


2.靜態(tài)庫(kù) lib 輸出路徑:


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


3.動(dòng)態(tài)庫(kù)輸出路徑(注意這個(gè)放在最后):


SET_TARGET_PROPERTIES(dllname PROPERTIES RUNTIME_OUTPUT_DIRECTORY ../bin)


4.上面兩條語(yǔ)句分別設(shè)置了Debug版本和Release版本下庫(kù)文件的后綴名


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


5.設(shè)置了Debug版本和Release版本下可執(zhí)行文件的后綴名


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


6.設(shè)置項(xiàng)目名稱(chēng):


PROJECT( name )


7.設(shè)置鏈接庫(kù)名稱(chēng):


target_link_libraries


例:target_link_libraries(

                     DealWithMould

             ${VTK_LIBRARIES}

             )


target_link_libraries(myProject hello) 

7.可執(zhí)行文件名,通過(guò)指定的源文件列表構(gòu)建出可執(zhí)行目標(biāo)文件:


ADD_EXECUTABLE

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

8. 為生成的target配置安裝目錄

install(TARGETS MyLib
        EXPORT MyLibTargets 
        LIBRARY DESTINATION lib  # 動(dòng)態(tài)庫(kù)安裝路徑
        ARCHIVE DESTINATION lib  # 靜態(tài)庫(kù)安裝路徑
        RUNTIME DESTINATION bin  # 可執(zhí)行文件安裝路徑
        PUBLIC_HEADER DESTINATION include  # 頭文件安裝路徑
        )

LIBRARY, ARCHIVE, RUNTIME, PUBLIC_HEADER是可選的,可以根據(jù)需要進(jìn)行選擇。 DESTINATION后面的路徑可以自行制定,根目錄默認(rèn)為CMAKE_INSTALL_PREFIX,可以試用set方法進(jìn)行指定,如果使用默認(rèn)值的話(huà),Unix系統(tǒng)的默認(rèn)值為 /usr/local, Windows的默認(rèn)值為 c:/Program Files/${PROJECT_NAME}。比如字linux系統(tǒng)下若LIBRARY的安裝路徑指定為lib,即為/usr/local/lib。所以要安裝mymath mymathapp我們可以這樣寫(xiě)

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

當(dāng)前目錄
PROJECT_SOURCE_DIR:工程的根目錄
 
PROJECT_BINARY_DIR:運(yùn)行cmake命令的目錄,通常為${PROJECT_SOURCE_DIR}/build
 
PROJECT_NAME:返回通過(guò) project 命令定義的項(xiàng)目名稱(chēng)
 
CMAKE_CURRENT_SOURCE_DIR:當(dāng)前處理的 CMakeLists.txt 所在的路徑
 
CMAKE_CURRENT_BINARY_DIR:target 編譯目錄
 
CMAKE_CURRENT_LIST_DIR:CMakeLists.txt 的完整路徑
 
EXECUTABLE_OUTPUT_PATH:重新定義目標(biāo)二進(jìn)制可執(zhí)行文件的存放位置
 
LIBRARY_OUTPUT_PATH:重新定義目標(biāo)鏈接庫(kù)文件的存放位置
安裝拷貝
#設(shè)置變量
set(OPENCV_DLL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/OpenCV/bin)
# 設(shè)置輸出目錄
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)


將所有符號(hào)鏈接和libfoo.so.1.2.3本身安裝到lib中

也可以使用安裝代替拷貝


install


install用于指定在安裝時(shí)運(yùn)行的規(guī)則。它可以用來(lái)安裝很多內(nèi)容,可以包括目標(biāo)二進(jìn)制、動(dòng)態(tài)庫(kù)、靜態(tài)庫(kù)以及文件、目錄、腳本等:

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

install(TARGETS <target>... [...])
install({FILES | PROGRAMS} <file>... [...])
install(DIRECTORY <dir>... [...])
install(SCRIPT <file> [...])
install(CODE <code> [...])
install(EXPORT <export-name> [...])

一般復(fù)制或文件夾

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

//將生成的文件夾下內(nèi)容全部拷貝到,指定目標(biāo)目錄;

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


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

射頻卡相關(guān)文章:射頻卡原理


關(guān)鍵詞: cmake

技術(shù)專(zhuān)區(qū)

關(guān)閉