中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

國家建設(shè)局網(wǎng)站app推廣怎么做

國家建設(shè)局網(wǎng)站,app推廣怎么做,服裝企業(yè)網(wǎng)站建設(shè)現(xiàn)狀,網(wǎng)站做支付鏈接安全嗎一、簡介 install命令用于指定安裝時的規(guī)則&#xff0c;由于安裝命令比較復(fù)雜&#xff0c;這里做一部分內(nèi)容的介紹&#xff0c;后續(xù)用到再繼續(xù)完善。 1.命令簡介 本文檔基于3.20&#xff0c;目前有6種安裝方式。 install(TARGETS <target>... [...]) install({FILES …

一、簡介

install命令用于指定安裝時的規(guī)則,由于安裝命令比較復(fù)雜,這里做一部分內(nèi)容的介紹,后續(xù)用到再繼續(xù)完善。

1.命令簡介

本文檔基于3.20,目前有6種安裝方式。

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

首先是通用參數(shù):

1.1 DESTINATION

指定安裝的目標(biāo)目錄。參數(shù)后接路徑,可以是相對路徑也可以是絕對路徑。

相對路徑則是相對于CMAKE_INSTALL_PREFIX變量值。也可以在安裝時通過DESTDIR修改。

make DESTDIR=/package/stage install

實(shí)際上,上述方式是在UNIX系統(tǒng)下,而更加常用的是使用--prefix選項(xiàng)

cmake --install binPath --prefix="destPath"

1.2 PERMISSIONS

指定被安裝文件的權(quán)限。包括OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE, WORLD_EXECUTE, SETUID, 和 SETGID。對于平臺中不支持的權(quán)限則忽略。

1.3 CONFIGURATIONS

指定一個構(gòu)建配置的列表(Debug,Release等),作用于之后的內(nèi)容,不對之前的內(nèi)容不生效。

對于這個參數(shù),必須要提到的是,cmake的安裝動作(配置)是由外部控制的:

cmake --install srcPath --config Debug|Release...

通過上述命令中的--config參數(shù),來控制執(zhí)行安裝Debug內(nèi)容還是Release內(nèi)容。

而對于當(dāng)前配置CONFIGURATIONS則是表示其后內(nèi)容隸屬的動作(在Debug,Release還是其他動作時執(zhí)行)。比如下面的例子:

install(TARGETS ${PROJECT_NAME}  CONFIGURATIONS ReleaseARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/lib/ReleaseLIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/lib/ReleaseCONFIGURATIONS DebugRUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/bin/Debug)

則表示執(zhí)行

cmake --install srcPath --config Debug

命令時,只安裝RUNTIME內(nèi)容,而不安裝ARCHIVE和LIBRARY內(nèi)容。相反的,如果執(zhí)行

cmake --install srcPath --config Release

命令時,只安裝ARCHIVE和LIBRARY內(nèi)容,而不安裝RUNTIME內(nèi)容。

此外,默認(rèn)的安裝動作和安裝配置都是Release的。

1.4 COMPONENT

指定安裝的組件名。目前還不確定組件的創(chuàng)建方式,等待后續(xù)完善。

1.5 EXCLUDE_FROM_ALL

不安裝的內(nèi)容。

1.6 RENAME

1.7 OPTIONAL

表示此安裝命令為可選項(xiàng),找不到也不會報錯。

二、Installing Targets

install(TARGETS targets... [EXPORT <export-name>][[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE][DESTINATION <dir>][PERMISSIONS permissions...][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][NAMELINK_COMPONENT <component>][OPTIONAL] [EXCLUDE_FROM_ALL][NAMELINK_ONLY|NAMELINK_SKIP]] [...][INCLUDES DESTINATION [<dir> ...]])

1.支持的target

1.1 ARCHIVE

靜態(tài)庫(除了macOS)、dll導(dǎo)入庫(也就是dll對應(yīng)的lib文件)

1.2 LIBRARY

共享庫(lib文件,不包括dll文件)

1.3 RUNTIME

可執(zhí)行文件,dll文件。

1.4 OBJECTS

對象庫的對象文件。參考add_library中的object library。

1.5 FRAMEWORK、BUNDLE、PUBLIC_HEADER、PRIVATE_HEADER、RESOURCE

這些都是與apple平臺相關(guān)的內(nèi)容,沒有環(huán)境,不做解釋。

其中PUBLIC_HEADER、PRIVATE_HEADER、RESOURCE官文解釋非apple平臺也有效,但是實(shí)際使用時沒有反應(yīng)。


HEADER使用方式:

set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER src/hello.h)install(TARGETS ${PROJECT_NAME}  PUBLIC_HEADER DESTINATION ${PROJECT_SOURCE_DIR}/include)

2 其他參數(shù)

2.1 NAMELINK_COMPONENT、NAMELINK_ONLY、NAMELINK_SKIP

component相關(guān)。

2.2 EXPORT

將庫名導(dǎo)出,與install(EXPORT)共同作用,將target導(dǎo)出。

2.3 INCLUDES DESTINATION

在執(zhí)行install(EXPORT)命令進(jìn)行導(dǎo)出時,將指定目錄列表添加到target的屬性INTERFACE_INCLUDE_DIRECTORIES中。

最后,對于install(targets)命令而言,一條install可以安裝多個target,而一個target也有可能被install多次(都生效,而不是覆蓋)。

三、Installing Files

install(<FILES|PROGRAMS> files...TYPE <type> | DESTINATION <dir>[PERMISSIONS permissions...][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])

1.FILES | PROGRAMS

兩者都是安裝文件,只不過FILES安裝后的文件默認(rèn)權(quán)限為OWNER_WRITE, OWNER_READ, GROUP_READ和WORLD_READ(如果設(shè)置了PERMISSIONS則按PERMISSIONS來);而對PROGRAMS而言,還多了OWNER_EXECUTE, GROUP_EXECUTE和WORLD_EXECUTE三個權(quán)限。

安裝的文件內(nèi)容,可以是生成器表達(dá)式$<...>,但是以任何表達(dá)式開始的文件都要求是完整路徑(實(shí)際上不是表達(dá)式也需要全路徑)。

2.TYPE | DESTINATION

兩者用于指定文件安裝的目標(biāo)目錄,兩者不能同事存在。如果使用TYPE的話則會指定文件的類型,并從GNUInstallDirs中獲取相應(yīng)的變量,而如果沒有定義此變量則使用內(nèi)置的默認(rèn)值。下表則是文件類型對應(yīng)的變量和默認(rèn)路徑。

TYPE Argument

GNUInstallDirs Variable

Built-In Default

BIN

${CMAKE_INSTALL_BINDIR}

bin

SBIN

${CMAKE_INSTALL_SBINDIR}

sbin

LIB

${CMAKE_INSTALL_LIBDIR}

lib

INCLUDE

${CMAKE_INSTALL_INCLUDEDIR}

include

SYSCONF

${CMAKE_INSTALL_SYSCONFDIR}

etc

SHAREDSTATE

${CMAKE_INSTALL_SHARESTATEDIR}

com

LOCALSTATE

${CMAKE_INSTALL_LOCALSTATEDIR}

var

RUNSTATE

${CMAKE_INSTALL_RUNSTATEDIR}

<LOCALSTATEdir>/run

DATA

${CMAKE_INSTALL_DATADIR}

<DATAROOTdir>

INFO

${CMAKE_INSTALL_INFODIR}

<DATAROOTdir>/info

LOCALE

${CMAKE_INSTALL_LOCALEDIR}

<DATAROOTdir>/locale

MAN

${CMAKE_INSTALL_MANDIR}

<DATAROOTdir>/man

DOC

${CMAKE_INSTALL_DOCDIR}

<DATAROOTdir>/doc

如果提供了DESTINATION參數(shù),則使用DESTINATION參數(shù)提供的目錄。

四、Installing Directories

install(DIRECTORY dirs...TYPE <type> | DESTINATION <dir>[FILE_PERMISSIONS permissions...][DIRECTORY_PERMISSIONS permissions...][USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>] [EXCLUDE_FROM_ALL][FILES_MATCHING][[PATTERN <pattern> | REGEX <regex>][EXCLUDE] [PERMISSIONS permissions...]] [...])

用于安裝一個或多個目錄到目標(biāo)目錄,目錄結(jié)構(gòu)被完整的拷貝。每個目錄的最后一項(xiàng)會被添加到目標(biāo)目錄,如果不想這樣則可以以/結(jié)尾,表示最后一項(xiàng)為空。

#表示將build目錄下的內(nèi)容安裝到test目錄下
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/ 
DESTINATION ${PROJECT_SOURCE_DIR}/test)#表示將build目錄的內(nèi)容安裝到test目錄下
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build 
DESTINATION ${PROJECT_SOURCE_DIR}/test)

如果輸入目錄為空,則創(chuàng)建目標(biāo)目錄,且內(nèi)容為空。

1.權(quán)限

FILE_PERMISSIONS、DIRECTORY_PERMISSIONS 、USE_SOURCE_PERMISSIONS三者用于控制目標(biāo)目錄(DIRECTORY_PERMISSIONS)和文件(FILE_PERMISSIONS)的權(quán)限。如果使用了USE_SOURCE_PERMISSIONS,而FILE_PERMISSIONS沒有指定,則文件權(quán)限與源文件權(quán)限一樣。

如果沒有指定FILE_PERMISSIONS權(quán)限,則文件的權(quán)限與FILES命令的權(quán)限一樣(OWNER_WRITE, OWNER_READ, GROUP_READ和WORLD_READ),而目錄權(quán)限與PROGRAMS一樣(OWNER_WRITE, OWNER_READ, GROUP_READ,WORLD_READ,OWNER_EXECUTE, GROUP_EXECUTE和WORLD_EXECUTE)

2.過濾

目錄的安裝可以通過PATTERN和REGEX選項(xiàng)細(xì)粒度的控制,其中PATTERN匹配完整文件名,REGEX默認(rèn)匹配文件名中的任何一部分(可以通過/或者$實(shí)現(xiàn)與PATTERN相同的效果)。

默認(rèn)情況下,所有文件和目錄都會被install(不論P(yáng)ATTERN和REGEX的匹配結(jié)果),但是我們可以通過設(shè)置FILES_MATCHING過濾沒有匹配的文件。

#目錄全部拷貝,安裝以target開始的文件
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/ DESTINATION ${PROJECT_SOURCE_DIR}/test
FILES_MATCHINGPATTERN "target*")#目錄全部拷貝,只安裝target文件
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/ DESTINATION ${PROJECT_SOURCE_DIR}/test
FILES_MATCHINGPATTERN "target")#目錄全部拷貝,安裝文件名包含target的文件
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/ DESTINATION ${PROJECT_SOURCE_DIR}/test
FILES_MATCHINGREGEX "target")#REGEX通過前綴$或后綴/達(dá)到與PATTERN相同的效果
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/ DESTINATION ${PROJECT_SOURCE_DIR}/test
FILES_MATCHINGREGEX "target/")
install(DIRECTORY  ${PROJECT_SOURCE_DIR}/build/ DESTINATION ${PROJECT_SOURCE_DIR}/test
FILES_MATCHINGREGEX "$target")

五、Installing Exports

install(EXPORT <export-name> DESTINATION <dir>[NAMESPACE <namespace>] [[FILE <name>.cmake]|[PERMISSIONS permissions...][CONFIGURATIONS [Debug|Release|...]][EXPORT_LINK_INTERFACE_LIBRARIES][COMPONENT <component>][EXCLUDE_FROM_ALL])

生成并安裝一個CMake文件,該文件包含了將targets從安裝目錄中導(dǎo)入到其他項(xiàng)目的代碼。安裝的內(nèi)容是跟上面install(TARGETS)中EXPORT的選項(xiàng)一樣。

NAMESPACE選項(xiàng)將在目標(biāo)名被寫入導(dǎo)入文件時在前面添加<namespace>。默認(rèn)生成的文件為<export-name>.cmake,而FILE選項(xiàng)可以將其設(shè)置為其他名字,這個名字必須以.cmake結(jié)尾。

下面是一個簡單的例子:

創(chuàng)建一個項(xiàng)目hello:

cmake_minimum_required(VERSION 3.20)
project(target01 VERSION 1.0.0)
file(GLOB SOURCES "src/*")set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/../helloPkg/)add_library(${PROJECT_NAME} SHARED ${SOURCES})set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER src/hello.h)install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/../helloPkg/lib/ReleaseRUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/../helloPkg/bin/ReleasePUBLIC_HEADER DESTINATION ${PROJECT_SOURCE_DIR}/../helloPkg/include)# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmakeinstall(EXPORT ${PROJECT_NAME} DESTINATION ${PROJECT_SOURCE_DIR}/../helloPkg/lib/cmake/${PROJECT_NAME}NAMESPACE TEST::)
configure_file(${PROJECT_SOURCE_DIR}/${PROJECT_NAME}.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmakeDESTINATION ${PROJECT_SOURCE_DIR}/../helloPkg/lib/cmake/${PROJECT_NAME})

同目錄下創(chuàng)建src文件夾,并創(chuàng)建:

class __declspec(dllexport) Hello
{
public:void print();
};
#include "hello.h"
#include <iostream>void Hello::print() {std::cout << "hello world!" << std::endl;
}

CMakeLists.txt統(tǒng)計目錄下創(chuàng)建target01.cmake.in:

@PACKAGE_INIT@include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@.cmake")

然后在hello同級目錄下創(chuàng)建main項(xiàng)目

cmake_minimum_required(VERSION 3.20)
project(main)set(CMAKE_INSTALL_PREFIX  ${PROJECT_SOURCE_DIR}/../helloPkg/lib/cmake)
set(target01_DIR  ${PROJECT_SOURCE_DIR}/../helloPkg/lib/cmake/target01/)find_package(target01 REQUIRED PATHS ${PROJECT_SOURCE_DIR}/../helloPkg/)
add_executable(${PROJECT_NAME} src/main.cpp)target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../helloPkg/include)
target_link_libraries(${PROJECT_NAME} PRIVATE TEST::target01)

創(chuàng)建src目錄并創(chuàng)建main.cpp

#include "hello.h"int main()
{Hello h;h.print();return 0;
}

最后,在main項(xiàng)目同級目錄下創(chuàng)建helloPkg文件夾。

這里雖然沒搞懂中間的configure_file和*.cmake.in文件的作用,但是試出來了,先記一下。

http://www.risenshineclean.com/news/57810.html

相關(guān)文章:

  • 視頻直播網(wǎng)站如何做廊坊seo
  • 怎么網(wǎng)上接網(wǎng)站開發(fā)單自己做百度招商加盟推廣
  • dw制造網(wǎng)站log怎么做谷歌推廣seo
  • 站長工具seo綜合查詢隱私查詢網(wǎng)推一手單渠道
  • 河北網(wǎng)站制作公司seo推廣方法
  • 網(wǎng)站建設(shè)近義詞seo sem關(guān)鍵詞優(yōu)化
  • 網(wǎng)站怎么做多級菜單引擎網(wǎng)站推廣法
  • 做資源共享網(wǎng)站福清網(wǎng)絡(luò)營銷
  • h5網(wǎng)站制作接單域名備案
  • 濟(jì)南shuncheng科技 網(wǎng)站建設(shè)免費(fèi)推廣引流平臺有哪些
  • 請網(wǎng)站制作公司費(fèi)用培訓(xùn)機(jī)構(gòu)不退費(fèi)最有效方式
  • 政府網(wǎng)站作用社群推廣平臺
  • 手機(jī)網(wǎng)站開發(fā) c資源網(wǎng)站優(yōu)化排名優(yōu)化
  • 論壇網(wǎng)站方案鄭州seo排名優(yōu)化公司
  • c語言和c 哪個做網(wǎng)站好網(wǎng)絡(luò)營銷方案的范文
  • 網(wǎng)站建設(shè)gong谷歌推廣平臺
  • 提供營銷型網(wǎng)站鄭州營銷型網(wǎng)站建設(shè)
  • 個人網(wǎng)站怎樣做超鏈接天堂網(wǎng)
  • 廣州番禺服裝網(wǎng)站建設(shè)在線培訓(xùn)系統(tǒng)平臺
  • 北京土巴兔裝修公司電話關(guān)鍵詞優(yōu)化報價怎么樣
  • 有什么字體設(shè)計的網(wǎng)站百度發(fā)視頻步驟
  • 河南重大項(xiàng)目建設(shè)網(wǎng)站網(wǎng)絡(luò)營銷成功的案例分析
  • 安徽大學(xué)電子信息工程學(xué)院官方網(wǎng)合肥網(wǎng)絡(luò)seo
  • 國家三大外貿(mào)平臺南寧seo費(fèi)用服務(wù)
  • 創(chuàng)業(yè)平臺是什么意思企業(yè)網(wǎng)站優(yōu)化報告
  • 磁力搜索網(wǎng)站怎么做的網(wǎng)絡(luò)推廣有幾種方法
  • 做地方門戶網(wǎng)站的資質(zhì)清遠(yuǎn)今日頭條最新消息
  • 自助網(wǎng)站安裝百度到桌面
  • 1688做網(wǎng)站費(fèi)用常州網(wǎng)站制作維護(hù)
  • 計算機(jī)網(wǎng)站開發(fā)nba排名