cmake指定程序輸出目錄和庫文件輸出目錄和拷貝文件


概述

    1. 本文樣式環境: win10+cmake 3.18
    1. 本文將介紹使用CMAKE配置項目輸出目錄和 LIbrary項目的輸出目錄
    1. 本文將介紹 cmake的file函數的基礎用法之拷貝文件

重點, 這些設置一定要放在函數add_library或者add_executable之前

重點, 這些設置一定要放在函數add_library或者add_executable之前

重點, 這些設置一定要放在函數add_library或者add_executable之前

重點, 這些設置一定要放在函數add_library或者add_executable之前

重點, 這些設置一定要放在函數add_library或者add_executable之前

開始之前

我定義了如下變量, 用作保存x64和x86不同設置

# 64位
if (CMAKE_CL_64)
    # 設置 可執行程序輸出目錄
	set(publish_bin_debug 			${CMAKE_CURRENT_SOURCE_DIR}/publish/x64/bin/debug64)
	set(publish_bin_release 		${CMAKE_CURRENT_SOURCE_DIR}/publish/x64/bin/release64)

    # 設置庫文件輸出目錄
	set(publish_lib_debug 			${CMAKE_CURRENT_SOURCE_DIR}/publish/x64/lib/debug64)
	set(publish_lib_release 		${CMAKE_CURRENT_SOURCE_DIR}/publish/x64/lib/release64)

	set(PROJECT_NAME 				${PROJECT_NAME}64)
# 32
else()
 # 設置 可執行程序輸出目錄
	set(publish_bin_debug 			${CMAKE_CURRENT_SOURCE_DIR}/publish/x86/bin/debug)
	set(publish_bin_release 		${CMAKE_CURRENT_SOURCE_DIR}/publish/x86/bin/release)

 # 設置庫文件輸出目錄
	set(publish_lib_debug 			${CMAKE_CURRENT_SOURCE_DIR}/publish/x86/lib/debug)
	set(publish_lib_release 		${CMAKE_CURRENT_SOURCE_DIR}/publish/x86/lib/release)
endif()

1.設置程序輸出目錄

如果你的項目是動態庫,比如 dll, 或者你的項目是 可執行程序, 下面的設置,將輸出到指定的目錄。

		# 指定可執行程序輸出目錄
		set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG 	${publish_bin_debug})
		set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE 	${publish_bin_release})

2. 設置庫文件輸出目錄

		# 指定 庫文件輸出目錄
		set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG 	${publish_lib_debug})
		set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RLEASE 	${publish_lib_release})

3. 文件拷貝

動態庫項目,咱們做好后都會發布 頭文件和庫文件和動態庫三類文件,之前,

  • windwos,我使用批處理bat執行文件拷貝到指定目錄
  • Linux, 使用shell完成文件拷貝。
    有了 CMake以后,直接使用file 實現文件拷貝,簡直方便的不要不要的。
    一個簡單的例子:
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/include/udp/udp_interface.h DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/publish/x64/include)

COPY的語法是: file(COPY <填寫你要拷貝的文件> DESTINATION <填寫你要的輸出目錄>)
更多用法,請參考 CMake的官方文檔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM