日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cmakelist基本语法

發(fā)布時間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmakelist基本语法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、幾個基本概念:

1、GCC

a、由GUN開發(fā)的編譯器,支持C/C++,Java等語言.

b、項目簡單時,可以使用gcc/g++來進行編譯.

c、項目復(fù)雜時,只使用gcc來進行編譯會變得非常復(fù)雜.

2、make

a、主要負責(zé)一個軟件工程中多個源代碼的自動編譯工作

b、注意每個平臺的make不一樣,makefile的語法也不一樣

c、make工具可以識別出工程中哪些文件已經(jīng)被修改,并且在再次編譯的時候只編譯這些文件,從而提高編譯的效率;

d、make的主要任務(wù)是根據(jù) makefile 文件(一個腳本文件)中定義的規(guī)則和步驟,根據(jù)各個模塊的更新情況,自動完成整個軟件項目的維護和目標程序生成工作。

3、Makefile

a、Makefile是有條理的gcc編譯命令文件.

b、利用make工具執(zhí)行Makefile文件,來達到編譯的目的.

c、程序簡單時,可以使用Makefile.

d、程序復(fù)雜時,有局限性.

4、CMake

a、全稱:Cross Platform CMake,是一個跨平臺的安裝(編譯)工具.

b、利用cmake工具讀取CMakeList.txt配置文件,并最終生成Makefile文件.

c、CMake開發(fā)簡單,易于理解.

d、編程效率高.

5、CMakelist

a、CMakeList其實就是適配CMake語法的一個配置文件

b、不需要關(guān)注不同的Make工具需要的不同格式的MakeFile文件,而是直接使用Cmake 構(gòu)建出適應(yīng)當(dāng)前平臺的Makefile進而進行代碼編譯(因此cmake具有跨平臺特點)。

6、Kconfig

kconfig用來做系統(tǒng)配置,生成menuconfig的配置文件:

a、供cmake使用:CMakeList會使用這些參數(shù)

b、用于編譯源碼

7、ninja

a、ninja根據(jù).ninja文件將源碼生成目標程序

b、類似make,但是處理速度更快

8、.ninja

a、包含一系列編譯規(guī)則和命令的文件

b、類似Makefile,但是語法更簡單

9、GN

a、大規(guī)模工程的跨平臺構(gòu)建工具,類似cmake,但是構(gòu)建速度更快。

b、GN(generate ninja)是一種元構(gòu)建系統(tǒng),生成Ninja構(gòu)建文件(Ninja build files),即利用GN工具把.gn文件轉(zhuǎn)換成.ninja文件

c、gn和ninja的關(guān)系就與cmake和make的關(guān)系差不多

10、build.gn

a、項目構(gòu)建文件,不直接構(gòu)建項目,而是產(chǎn)生構(gòu)建項目的ninja文件,然后再用ninja去構(gòu)建項目

b、類似cmakelist,但是語法更簡單

原始跨平臺:

編寫makefile文件,使用各平臺上的make(微軟的MS nmake、GNU的make)來編譯makefile文件,這種做法的缺點是各平臺的make實現(xiàn)不同,導(dǎo)致這種原始的做法其實復(fù)用度并不高,需要針對各平臺單獨編寫差異巨大的makefile文件,那為什么要介紹它呢,因為這是跨平臺的根,所有跨平臺工具,最終都是要依賴各平臺應(yīng)用的集成開發(fā)環(huán)境的編譯器來執(zhí)行編譯,這是固定不變的,也就是說各平臺的編譯,最終還是需要各平臺的makefile,這一點是無法逃避的,而怎么由人工轉(zhuǎn)為自動化,才是跨平臺編譯的進階之路。

進階跨平臺:

使用cmake,編寫統(tǒng)一的makefile文件,最后由cmake自動生成各平臺相關(guān)的makefile文件執(zhí)行編譯,這一點上,cmake已經(jīng)是比較好的跨平臺工具了,一般的跨平臺工程基本已經(jīng)滿足需求了。

現(xiàn)代跨平臺:

當(dāng)工程規(guī)模增大到難以想象的量級時,編譯速度和工程模塊的劃分變得尤為重要,其中chromium工程就遇到這兩個問題,于是最初誕生了gyp,最后演化升級為gn,其旨在追求工程更加清晰的模塊和結(jié)構(gòu)呈現(xiàn),以及更快的編譯速度。前者通過語法層面實現(xiàn),后者則依靠ninja來提升編譯速度,因為大型工程的編譯,很大一部分時間都花在了源文件編譯依賴樹的分析這塊,而ninja更像是一個編譯器的預(yù)處理,其主要目的是舍棄gcc、msvc、clang等編譯器在編譯過程中遞歸查找依賴的方式,因為這里存在很多重復(fù)的依賴查找,而ninja改進了這一過程,提前生成編譯依賴樹,編譯期間按照編譯依賴樹的順序依次編譯,這樣就大大減少了編譯期間雜亂的編譯順序造成的重復(fù)依賴關(guān)系查找。

二、CMakelist編寫(CMake基本指令)

1、configure_file

功能

cmake 中的 configure_file 指令通過讀取輸入文件中的內(nèi)容,將 CMakeLists.txt 文件中的變量轉(zhuǎn)變?yōu)?C/C++ 中可識別的宏定義,然后存入另一個文件中。其語法格式如下。其中,input 為輸入的文件,output 為輸出的文件。通常,輸入文件為 http://xxx-config.h.in,輸出文件為 xxx-config.h

語法

configure_file(<input> <output>

?????????????? [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |

??????????????? FILE_PERMISSIONS <permissions>...]

?????????????? [COPYONLY] [ESCAPE_QUOTES] [@ONLY]

?????????????? [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

主要參數(shù)說明

input:輸入的文件名,通常為 xxx-config.h.in;

output:輸出的文件名,通常為 xxx-config.h;

@ONLY:在 <input> 文件中只使用 @VAR@ 的方式獲取變量值,不適用 ${VAR} 的方式;

示例

a、判斷變量是否定義

輸入文件xxx-config.h.in語法:

#cmakedefine VAR

用途:

源碼中不關(guān)心變量值,只關(guān)心變量是否被定義。如果 CMakeLists.txt 文件中,定義了變量 VAR,那么在轉(zhuǎn)化出來的輸出文件中就會存在 #define VAR 的語句。否則,在輸出文件中就會顯示 /*undef VAR*/。然后,在源碼中使用 #ifdef 語句進行使用——#ifdef VAR。

b、判斷選項是否開啟

輸入文件xxx-config.h.in語法:

#cmakedefine01 VAR

用途:

CMakelists.txt 中的 option(VAR ...) 用于開關(guān)操作,并且可以使用 cmake -DVAR=ON/OFF .. 修改其變量值。上述指令根據(jù) CMakeLists.txt 中 VAR 的值為 ON 或 OFF,將其轉(zhuǎn)換為輸出文件中的 #define VAR 1 或 #define VAR 0。然后在源碼中使用 #if 進行引用——#if VAR。當(dāng)然,該語句也可用于使用 set(VAR xxx) 定義的變量,但是用于 option(VAR ...) 更合適。

c、獲取變量值

輸入文件xxx-config.h.in語法(其中的 @VAR@ 可以替換為 ${VAR}):

#cmakedefine VAR @VAR@

#define SELF_DEFINE_MACRO_NAME @VAR@

用途:

CMakeLists.txt 文件中,變量 VAR 多用于定義某些信息,比如版本號,作者,項目描述,調(diào)試等級等。然后在源碼中輸出這些值到固定位置,起到提示的作用。

總結(jié):

使用configure_file()可以省去很多的類似add_compile_options()指令。只需在 CMakeLists.txt 文件中定義變量,然后再在xxx-config.h.in 文件中使用 #cmakedefine 進行引用即可,即通過cmakelist控制宏變量的使用。

2、set

功能

用來顯式定義變量。

語法

SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])

主要參數(shù)說明

VAR:要設(shè)置的變量名

VALUE:變量的值

示例:

SET (SRC_LST STRING)

說明: 用變量代替值,例子中定義SRC_LST代替后面的字符串。

3、if

功能

對項目進行有條件編譯。

語法

if(<condition>)

? <commands>

elseif(<condition>) # optional block, can be repeated

? <commands>

else()????????????? # optional block

? <commands>

endif()

主要參數(shù)說明

condition:如果為1、ON、TRUE等值,則條件為真,否則為變量(則判斷變量是否已經(jīng)定義)

commands:為真時執(zhí)行的命令

4、add_library

功能

使用指定的源文件向工程中添加一個目標庫。

語法

add_library(<name> [STATIC | SHARED | MODULE]

??????????? [EXCLUDE_FROM_ALL]

??????????? [<source>...])

主要參數(shù)說明

name:構(gòu)建成的庫名,必須全局唯一

STATIC|SHARED|MOUDLE:庫的類型,STATIC(靜態(tài)庫) SHARED(動態(tài)庫) MODULE(模塊庫)

EXCLUDE_FROM_ALL:加了此屬性的target在默認編譯的時候,不會被編譯,只能手動編譯

source:構(gòu)建庫的源文件,可以直接指定,也可以后續(xù)使用target_sources()指定

示例

add_library(hello_library STATIC

??? src/Hello.cpp

)

5、target_compile_definitions

功能

向目標添加編譯標志。

語法

target_compile_definitions(<target>

? <INTERFACE|PUBLIC|PRIVATE> [items1...]

? [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

主要參數(shù)說明

target:編譯目標,必須已經(jīng)通過add_executable() 或者add_library() 創(chuàng)建,并且must not be an ALIAS target(輸入工程).

關(guān)鍵字INTERFACE,PUBLIC和PRIVATE用來指定其后參數(shù)的作用域。PRIVATE 和 PUBLIC 項將產(chǎn)生的COMPILE_DEFINITIONS 屬性。PUBLIC和INTERFACE 項將產(chǎn)生的INTERFACE_COMPILE_DEFINITIONS 屬性。

items:參數(shù)指定編譯定義。重復(fù)調(diào)用相同的目標將按照調(diào)用順序追加(定義)。

示例

target_compile_definitions(cmake_examples_compile_flags

PRIVATE CONFIG_FSM_DEBUG=1

)

說明:為編譯目標cmake_examples_compile_flags設(shè)置編譯標志CONFIG_FSM_DEBUG=1

6、set_target_properties

功能

設(shè)置目標的屬性,語法是列出想要更改的所有目標,然后提供接下來想要設(shè)置的值,可以使用該命令任何所需的鍵值對。

語法

set_target_properties(target1 target2 ...

????????????????????? PROPERTIES prop1 value1

????????????????????? prop2 value2 ...)

主要參數(shù)說明

target1、target2…:要設(shè)置屬性的目標1、目標2

PROPERTIES:屬性關(guān)鍵字

prop1 value1、prop2 value2:鍵值對1、鍵值對2

示例

set_target_properties(

Thirdlib

PROPERTIES IMPORTED_LOCATION

${CMAKE_CURRENT_SOURCE_DIR}/jniLibs/libThirdlib.so

)

說明:為目標Thirdlib設(shè)置導(dǎo)入位置屬性

7、target_include_targets

功能

為目標添加庫

語法

# Set a target to include all interface directories of depended targets.

# The arguments must be target.

function(target_include_targets target type)

??? foreach(arg ${ARGN})

??????? target_include_directories(${target} ${type}

??????????? $<TARGET_PROPERTY:${arg},INTERFACE_INCLUDE_DIRECTORIES>)

??? endforeach()

endfunction()

主要參數(shù)說明

示例

target_include_targets(appstart

PRIVATE atr ats diag nvm)

說明:為目標appstart添加庫atr ats diag nvm

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

8、target_include_targets_if

功能

有條件的為目標添加庫

語法

# Helper to link libraries with conditions

macro(target_include_targets_if)? # <conditon> THEN <command>

??? cmake_parse_arguments(MY "" "" "THEN" ${ARGN})

??? if(${MY_UNPARSED_ARGUMENTS})

??????? target_include_targets(${MY_THEN})

??? endif()

endmacro()

主要參數(shù)說明

示例

target_include_targets_if(CONFIG_AT_BT_APP_SUPPORT THEN

appstart PRIVATE bt_app)

說明:如果定義了CONFIG_AT_BT_APP_SUPPORT,則為目標appstart添加庫bt_app

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

9、target_include_directories

功能

為特定目標 target 添加頭文件目錄

語法

target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]

? ??????????????????????????????? ???<INTERFACE|PUBLIC|PRIVATE> [items1...]

? ??????????????????????????????? ??[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

主要參數(shù)說明

<target>: 構(gòu)建目標,使用 add_executable() 或 add_library 聲明,不可為 ALIAS 目標;

[SYSTEM]: 指定是否平臺相關(guān),若該屬性與 PUBLIC 或 INTERFACE 一同設(shè)置,CMake 將使用指定的目錄初始化目標的 INTERFACE_SYSTEM_INCLUDE_DIRECTORIES 屬性;

INTERFACE_SYSTEM_INCLUDE_DIRECTORIES: 該屬性為含有平臺相關(guān)頭文件的目錄,常用于抑制編譯器警告;

[AFTER|BEFORE]: 指定相應(yīng)目錄添加的順序,在后添加/在前添加。

[INTERFACE|PUBLIC|PRIVATE]: 指定頭文件的可見性,若設(shè)置PRIVATE或PUBLIC,CMake 將使用指定的目錄初始化目標的INCLUDE_DIRECTORIES 屬性,若設(shè)置為PUBLIC或 INTERFACE,CMake 將使用指定的目錄初始化目標的 INTERFACE_INCLUDE_DIRECTORIES 屬性;

INCLUDE_DIRECTORIES: 該屬性為目標的頭文件目錄;

INTERFACE_INCLUDE_DIRECTORIES: 該屬性為目標的開放頭文件目錄;

[items]: 指定要添加的頭文件目錄,可以使用相對路徑或絕對路徑,相對路徑為相對于當(dāng)前路徑 CMAKE_CURRENT_SOURCE_DIR,也可以使用 CMake 提供的 generator expression。

示例

target_include_directories(appstart

PRIVATE //kaihong/kh_platform/interfaces/kits/nativeapi)

說明:為目標appstart添加頭文件目錄//kaihong/kh_platform/interfaces/kits/nativeapi

注意:為目標添加當(dāng)前目錄或子目錄下的頭文件目錄時使用PUBLIC,否則使用PRIVATE

10、set_if

功能

條件設(shè)置目標

語法

# Helper to set variable with conditions

macro(set_if var) # <condition> THEN <val_true> OTHERWISE <val_false>

??? cmake_parse_arguments(MY "" "" "THEN;OTHERWISE" ${ARGN})

??? if(${MY_UNPARSED_ARGUMENTS})

??????? if(MY_THEN)

??????????? set(${var} ${MY_THEN})

??????? endif()

??? else()

??????? if (MY_OTHERWISE)

??????????? set(${var} ${MY_OTHERWISE})

??????? endif()

??? endif()

endmacro()

主要參數(shù)說明

示例

set_if(ldscript ?????? CONFIG_APP_RUN_ON_FLASH

THEN ?????????? ${SOURCE_TOP_DIR}/components/hal/ldscripts/flashrun.ld

?? ? OTHERWISE ${SOURCE_TOP_DIR}/components/hal/ldscripts/ddrrun.ld )

說明:如果定義了CONFIG_APP_RUN_ON_FLASH,則鏈接器鏈接${SOURCE_TOP_DIR}/components/hal/ldscripts/flashrun.ld,否則鏈接${SOURCE_TOP_DIR}/components/hal/ldscripts/ddrrun.ld

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

11、link_directories

功能

添加鏈接器尋找?guī)斓哪夸?/p>

語法

link_directories([AFTER|BEFORE] directory1 [directory2 ...])

主要參數(shù)說明

Directory:要尋找的庫的路徑

示例

link_directories (${OHOS_OUT_PATH}/libs)

12、target_link_libraries

功能

將目標與庫文件鏈接

語法

target_link_libraries(<target>

????????????????????? <PRIVATE|PUBLIC|INTERFACE> <item>...

????????????????????? [<PRIVATE|PUBLIC|INTERFACE> <item>...]...)

主要參數(shù)說明

<target>:目標

<item>:庫文件

示例

target_link_libraries(${BUILD_TARGET} PRIVATE all_libs appstart)

13、target_link_whole_archive

功能

設(shè)置連接器將庫中的符號全部加載到鏈接的庫中

語法

# Link targets with --whole-archive. PUBLIC/PRIVATE is required as parameter,

# but PRIVATE will be used forcedly.

function(target_link_whole_archive target signature)

??? target_link_libraries(${target} PRIVATE -Wl,--whole-archive)

??? foreach(arg ${ARGN})

??????? target_link_libraries(${target} PRIVATE ${arg})

??? endforeach()

??? target_link_libraries(${target} PRIVATE -Wl,--no-whole-archive)

endfunction()

主要參數(shù)說明

示例

target_link_whole_archive(${BUILD_TARGET} PRIVATE? ${OHOS_FORCE_LINK_LIBS})

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

14、target_link_group

功能

為目標添加鏈接庫組

語法

# Link targets with --start-group. PUBLIC/PRIVATE is required as parameter,

# but PRIVATE will be used forcedly.

function(target_link_group target signature)

??? target_link_libraries(${target} PRIVATE -Wl,--start-group)

??? foreach(arg ${ARGN})

??????? target_link_libraries(${target} PRIVATE ${arg})

??? endforeach()

??? target_link_libraries(${target} PRIVATE -Wl,--end-group)

endfunction()

主要參數(shù)說明

示例

target_link_group(${BUILD_TARGET}

PRIVATE

all_libs ${OHOS_ALL_BASE_LIBS} ${OHOS_SERIES_PORT_PARAM} ${libcpp_file_name})

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

15、relative_glob

功能

產(chǎn)生一個匹配的文件列表并將它存儲到變量中。如果 RELATIVE 標志位被設(shè)定,將返回指定路徑的相對路徑。

語法

macro(relative_glob var)

??? file(GLOB ${var} RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${ARGN})

endmacro()

主要參數(shù)說明

示例

relative_glob(srcs include/*.h src/*.c src/*.h)

說明:產(chǎn)生一個匹配include/*.h、src/*.c、src/*.h的文件列表并將它存儲到變量srcs中。

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

16、beautify_c_code

功能

將編譯后的文件放在和代碼文件相同的文件夾中,并且設(shè)置格式化選項,使用自定義的排版格式。

語法

function(beautify_c_code target)

??? if(ARGN)

??????? set(beautify_target beautify_${target})

??????? if(NOT TARGET ${beautify_target})

??????????? add_custom_target(${beautify_target})

??????????? add_dependencies(beautify ${beautify_target})

??????? endif()

??????? add_custom_command(TARGET ${beautify_target} POST_BUILD

??????????? COMMAND clang-format -i ${ARGN}

??????????? WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

??? endif()

endfunction()

主要參數(shù)說明

示例

beautify_c_code(appstart ${srcs})

注意:此為extesion.cmake中的擴展指令,就像CMakeList.txt的庫一樣,加載后可以在CMakeList.txt中使用它的一些自定義函數(shù)和定義

17、cmake_minimum_required

功能

指明對cmake的最低(高)版本的要求。

語法

cmake_minimum_required(VERSION <min>[...<max>] [FATAL_ERROR])

主要參數(shù)說明

VERSION:指明后面的參數(shù)為版本號,這個參數(shù)是必須的。

min:指定cmake要求的最低版本號,如果cmake實際版本號低于min指定的版本號,cmake的執(zhí)行過程會終止。

max:指定cmake要求的最高版本號,要求該參數(shù)不能小于min。

FATAL_ERROR: 該參數(shù)在cmake的2.6及以后的版本被忽略,在cmake的2.4及以前的版本,需要指明該參數(shù),以便cmake能提示失敗而不僅僅是一個警告。

示例

cmake_minimum_required(VERSION 3.13)

說明:cmake要求的最低版本號為3.13

補充:cmake的版本號格式為major.minor[.patch[.tweak]],例如cmake的版本號為3.10.2

18、include

功能

載入并運行來自于文件或模塊的 CMake 代碼

語法

include(<file|module> [OPTIONAL] [RESULT_VARIABLE <VAR>] [NO_POLICY_SCOPE])

主要參數(shù)說明

示例

include(cmake/extension.cmake)

19、define_property

功能

定義和記錄自定義屬性。在作用域中定義一個用于set_property()和get_property()命令的屬性。它主要用于定義屬性的初始化或繼承方式。

語法

define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |

???????????????? TEST | VARIABLE | CACHED_VARIABLE>

???????????????? PROPERTY <name> [INHERITED]

???????????????? [BRIEF_DOCS <brief-doc> [docs...]]

???????????????? [FULL_DOCS <full-doc> [docs...]]

???????????????? [INITIALIZE_FROM_VARIABLE <variable>])

主要參數(shù)說明

第一個參數(shù)確定應(yīng)在其中使用屬性的范圍類型。它必須是下列之一:

GLOBAL??? = associated with the global namespace

DIRECTORY = associated with one directory

TARGET??? = associated with one target

SOURCE??? = associated with one source file

TEST????? = associated with a test named with add_test

VARIABLE? = documents a CMake language variable

CACHED_VARIABLE = documents a CMake cache variable

PROPERTY:屬性關(guān)鍵字

<name>:要定義的屬性名稱

BRIEF_DOCS:關(guān)鍵字,表示簡要文檔

<brief-doc>:簡要文檔與屬性關(guān)聯(lián)的字符串

FULL_DOCS:關(guān)鍵字,表示完整文檔

<full-doc>:完整文檔與屬性關(guān)聯(lián)的字符串

示例

# Use a global property to collect all application libraries

define_property(GLOBAL

PROPERTY app_libraries

BRIEF_DOCS "app libraries"

??? ???????????????????? FULL_DOCS "app libraries" )

說明:為所有應(yīng)用庫設(shè)置全局屬性“app_libraries”,關(guān)聯(lián)字符串為“app libraries”

20、message

功能

在終端顯示消息,類似printf

語法

message([<mode>] "message text" ...)

主要參數(shù)說明

mode 的值包括 FATAL_ERROR、WARNING、AUTHOR_WARNING、STATUS、VERBOSE等。常用其中2個——FATAL_ERROR、STATUS。

FATAL_ERROR:產(chǎn)生 CMake Error,會停止編譯系統(tǒng)的構(gòu)建過程;

STATUS:最常用的命令,常用于查看變量值,類似于編程語言中的 DEBUG 級別信息。

"message text"為顯示在終端的內(nèi)容。

示例

message("CMAKE_CURRENT_SOURCE_DIR dir: ${CMAKE_CURRENT_SOURCE_DIR}")

message("CMAKE_CURRENT_BINARY_DIR dir: ${CMAKE_CURRENT_BINARY_DIR}")

說明:在cmakelist.txt所在目錄執(zhí)行cmake .命令即可在終端輸出如下目錄信息

CMAKE_CURRENT_SOURCE_DIR dir: /home/jwl/safehat/device/soc/unisoc/8910dm/fibocom_l610/liteos_m/sdk

CMAKE_CURRENT_BINARY_DIR dir: /home/jwl/safehat/device/soc/unisoc/8910dm/fibocom_l610/liteos_m/sdk

21、find_package

功能

引入外部依賴包

語法

find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]

???????????? [REQUIRED] [[COMPONENTS] [components...]]

???????????? [OPTIONAL_COMPONENTS components...]

???????????? [NO_POLICY_SCOPE])

主要參數(shù)說明

PackageName:依賴包名稱,必須項;

version:版本號,若指定,則find_package一定要檢查找到的包是否與version版本兼容;

EXACT:如果指定,表示必須完全匹配version指定版本的包而不是僅僅兼容就可以;

QUIET:如果指定,表示disable信息輸出,即命令運行時不輸出相關(guān)message,即使沒有找到該包。但是如果REQUIRED被指定,還是會有信息輸出;

MODULE:表示只用于module模式,即使沒有找到也不會進入CONFIG模式;

REQUIRED:表示此包是必須的,如果沒有找到,構(gòu)建程序報錯并終止;

[COMPONENTS] [components…]:表示查找的包中必須要找到的組件(components),如果有任何一個找不到就算失敗,類似于REQUIRED,導(dǎo)致cmake停止執(zhí)行;

OPTIONAL_COMPONENTS components…:可選的依賴組件,即使找不到也不會影響cmake繼續(xù)執(zhí)行;

NO_POLICY_SCOPE:cmake policy,參見:cmake_policy

注:上述參數(shù)中,除了PackageName必需,其他都是可選參數(shù)。

示例

find_package(Git)

說明:通過在Modules路徑下尋找FindGit.cmake引入Git包

補充:cmake本身不提供任何搜索庫的便捷方法,所有搜索庫并給變量賦值的操作必須由cmake代碼完成,比如FindXXX.cmake和XXXConfig.cmake。只不過,庫的作者通常會提供這兩個文件,以方便使用者調(diào)用。find_package采用兩種模式搜索庫:

Module模式:搜索CMAKE_MODULE_PATH指定路徑下的FindXXX.cmake文件,執(zhí)行該文件從而找到XXX庫。其中,具體查找?guī)觳⒔oXXX_INCLUDE_DIRS和XXX_LIBRARIES兩個變量賦值的操作由FindXXX.cmake模塊完成。

Config模式:搜索XXX_DIR指定路徑下的XXXConfig.cmake文件,執(zhí)行該文件從而找到XXX庫。其中具體查找?guī)觳⒔oXXX_INCLUDE_DIRS和XXX_LIBRARIES兩個變量賦值的操作由XXXConfig.cmake模塊完成。

不過cmake默認采取Module模式,如果Module模式未找到庫,才會采取Config模式,Config模式是一個備選策略。

22、execute_process

功能

從當(dāng)前正在執(zhí)行的CMake進程中派生一個或多個子進程,從而提供了在配置項目時運行任意命令的方法。可以在一次調(diào)用 execute_process 時執(zhí)行多個命令。但請注意,每個命令的輸出將通過管道傳輸?shù)较乱粋€命令中。

語法

execute_process(COMMAND <cmd1> [<arguments>]

??????????????? [COMMAND <cmd2> [<arguments>]]...

??????????????? [WORKING_DIRECTORY <directory>]

???????????? ???[TIMEOUT <seconds>]

??????????????? [RESULT_VARIABLE <variable>]

??????????????? [RESULTS_VARIABLE <variable>]

??????????????? [OUTPUT_VARIABLE <variable>]

??????????????? [ERROR_VARIABLE <variable>]

??????????????? [INPUT_FILE <file>]

??????????????? [OUTPUT_FILE <file>]

??????????????? [ERROR_FILE <file>]

??????????????? [OUTPUT_QUIET]

??????????????? [ERROR_QUIET]

??????????????? [COMMAND_ECHO <where>]

??????????????? [OUTPUT_STRIP_TRAILING_WHITESPACE]

??????????????? [ERROR_STRIP_TRAILING_WHITESPACE]

??????????????? [ENCODING <name>]

??????????????? [ECHO_OUTPUT_VARIABLE]

??????????????? [ECHO_ERROR_VARIABLE]

??????????????? [COMMAND_ERROR_IS_FATAL <ANY|LAST>])

主要參數(shù)說明

COMMAND:子進程命令行。

WORKING_DIRECTORY:指定應(yīng)該在哪個目錄中執(zhí)行命令。

TIMEOUT:如果在指定的時間內(nèi)(以秒為單位計算,允許有小數(shù)位)子進程執(zhí)行仍未完成,則將會被中斷。

RESULT_VARIABLE:包含進程運行的結(jié)果。這要么是一個整數(shù)表示執(zhí)行成功,要么是一個帶有錯誤條件的字符串。

RESULTS_VARIABLE:變量將被設(shè)置為以分號分隔的列表形式包含所有進程的結(jié)果,按給定命令參數(shù)的順序排列。每個條目都是對應(yīng)子項的整數(shù)返回碼或描述錯誤條件的字符串。

OUTPUT_VARIABLE和ERROR_VARIABLE將包含執(zhí)行命令的標準輸出和標準錯誤。由于命令的輸出是通過管道傳輸?shù)?#xff0c;因此只有最后一個命令的標準輸出才會保存到OUTPUT_VARIABLE中。

INPUT_FILE:指定標準輸入重定向的文件名。

OUTPUT_FILE:指定標準輸出重定向的文件名。

ERROR_FILE:指定標準錯誤輸出重定向的文件名。

OUTPUT_QUIET和ERROR_QUIET:CMake將靜默地忽略標準輸出和標準錯誤。

COMMAND_ECHO <where>:正在運行的命令將被回送到<where>,而<where>將被設(shè)置為STDERR、STDOUT或NONE中的一個。

OUTPUT_STRIP_TRAILING_WHITESPACE:刪除運行命令的標準輸出中的任何尾隨空格。

ERROR_STRIP_TRAILING_WHITESPACE:刪除運行命令的錯誤輸出中的任何尾隨空格。

ENCODING <name>:適用于windows平臺,編碼名稱有NONE、AUTO、ANSI、OEM、UTF8或UTF-8。

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE:標準輸出或標準錯誤不會被專門重定向到配置的變量。

示例

execute_process(COMMAND "${GIT_EXECUTABLE}" describe --abbrev=8 --always --dirty WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}

OUTPUT_VARIABLE ??????? BUILD_GIT_REVISION

OUTPUT_STRIP_TRAILING_WHITESPACE)

23、set_property

功能

在作用域的零個或多個對象上設(shè)置一個屬性。

語法

set_property(<GLOBAL????????????????? ????|

????????????? DIRECTORY [<dir>]?????????? |

????????????? TARGET??? [<target1> ...]?? |

????????????? SOURCE??? [<src1> ...]

??????????????????????? [DIRECTORY <dirs> ...] |

??????????????????????? [TARGET_DIRECTORY <targets> ...]

????????????? INSTALL?? [<file1> ...]???? |

????????????? TEST????? [<test1> ...]???? |

????????????? CACHE???? [<entry1> ...]??? >

???????????? [APPEND] [APPEND_STRING]

???????????? PROPERTY <name> [<value1> ...])

主要參數(shù)說明

第一個參數(shù)決定該屬性設(shè)置所在的域,它必須為下面中的其中之一:

GLOBAL域是唯一的,并且不接特殊的任何名字。

DIRECTORY域默認為當(dāng)前目錄,但也可以用全路徑或相對路徑指定其他的目錄(前提是該目錄已經(jīng)被CMake處理)。

TARGET域可命名零或多個已經(jīng)存在的目標。

SOURCE域可命名零或多個源文件。注意:源文件屬性只對在相同目錄下的目標是可見的(CMakeLists.txt)。

TEST域可命名零或多個已存在的測試。

CACHE域必須命名零或多個已存在條目的cache.

必選項PROPERTY后面緊跟著要設(shè)置的屬性的名字。其他的參數(shù)用于構(gòu)建以分號隔開的列表形式的屬性值。如果指定了APPEND選項,則指定的列表將會追加到任何已存在的屬性值當(dāng)中。如果指定了APPEND_STRING選項,則會將值作為字符串追加到任何已存在的屬性值。

示例

set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${partinfogen_py} ${CONFIG_PARTINFO_JSON_PATH})

24、project

功能

指定camke工程的名字,還可指定版本號、描述、主頁鏈接以及編譯工程所使用的的語言。

語法

project(<PROJECT-NAME> [<language-name>...])

project(<PROJECT-NAME>

??????? [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]

??????? [DESCRIPTION <project-description-string>]

??????? [HOMEPAGE_URL <url-string>]

?? ?????[LANGUAGES <language-name>...])

主要參數(shù)說明

PROJECT_NAME : 必選,用來設(shè)置工程名,設(shè)置后,會把設(shè)置的值存儲在CMAKE_PROJECT_NAME變量中

**VERSION **:可選,工程版本號,有主版本號、次版本號、補丁版本號

**DESCRIPTION **:工程簡單的的描述

**HOMEPAGE_URL **:工程主頁url

**LANGUAGES **:工程使用的語言,默認為C或CXX

示例

project(${BUILD_TARGET} C CXX ASM)

25、include_directories

功能

將指定目錄添加到編譯器的頭文件搜索路徑之下,指定的目錄被解釋成當(dāng)前源碼路徑的相對路徑。

語法

include_directories ([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

主要參數(shù)說明

示例

include_directories(${SOURCE_TOP_DIR}/components/newlib/include)

26、add_custom_target

功能:增加一個沒有輸出的目標(不在all target中),使得它總是被構(gòu)建,該目標需要手動指定才能執(zhí)行,類似make clean這種命令(單獨make不會執(zhí)行,需要指定目標ckean)。

語法

add_custom_target(Name [ALL] [command1 [args1...]]

????????????????? [COMMAND command2 [args2...] ...]

????????????????? [DEPENDS depend depend depend ... ]

????????????????? [BYPRODUCTS [files...]]

????????????????? [WORKING_DIRECTORY dir]

????????????????? [COMMENT comment]

????????????????? [JOB_POOL job_pool]

????????????????? [VERBATIM] [USES_TERMINAL]

????????????????? [COMMAND_EXPAND_LISTS]

????????????????? [SOURCES src1 [src2...]])

主要參數(shù)說明

Name:target名字

COMMAND:指定要在構(gòu)建時執(zhí)行的命令行;

DEPENDS:指定命令所依賴的文件;

COMMENT:在構(gòu)建時執(zhí)行命令之前顯示給定消息;

WORKING_DIRECTORY:使用給定的當(dāng)前工作目錄執(zhí)行命令。如果它是相對路徑,它將相對于對應(yīng)于當(dāng)前源目錄的構(gòu)建樹目錄;

BYPRODUCTS:指定命令預(yù)期產(chǎn)生的文件。

示例

add_custom_target(finish

???????????????? COMMAND ${CMAKE_COMMAND} -E echo compile finish)

27、get_property

功能

獲取一個屬性值

語法

get_property(<variable>

?????????????? <GLOBAL???????????? |

??????????????? DIRECTORY [dir]??? |

??????????????? TARGET??? <target> |

??????????????? SOURCE??? <source> |

??????????????? TEST????? <test>?? |

??????????????? CACHE???? <entry>? |

??????????????? VARIABLE>

??????? ???????PROPERTY <name>

?????????????? [SET | DEFINED |BRIEF_DOCS | FULL_DOCS])

主要參數(shù)說明

示例

get_property(app_libraries GLOBAL PROPERTY app_libraries)

28、add_custom_command

功能

自定義生成輸出文件

語法

add_custom_command(OUTPUT output1 [output2 ...]

??????????????????? COMMAND command1 [ARGS] [args1...]

??????????????????? [COMMAND command2 [ARGS] [args2...] ...]

??????????????????? [MAIN_DEPENDENCY depend]

??????????????????? [DEPENDS [depends...]]

??????????????????? [BYPRODUCTS [files...]]

??????? ????????????[IMPLICIT_DEPENDS <lang1> depend1

???????????????????????????????????? [<lang2> depend2] ...]

??????????????????? [WORKING_DIRECTORY dir]

??????????????????? [COMMENT comment]

??????????????????? [DEPFILE depfile]

??????????????????? [JOB_POOL job_pool]

??????????????????? [VERBATIM] [APPEND] [USES_TERMINAL]

??????????????????? [COMMAND_EXPAND_LISTS])

主要參數(shù)說明

OUTPUT:目標文件名稱,代表下方的命令;

COMMAND:需要執(zhí)行的命令;

DEPENDS:執(zhí)行命令時需要的依賴;

示例

add_custom_command(OUTPUT printout

??????????????????? COMMAND ${CMAKE_COMMAND} -E echo compile finish

??????????????????? VERBATIM

?????????????????? )

29、add_dependencies

功能

為目標添加一個依賴關(guān)系,編譯時目標中的符號定義找不到時就可以添加其他庫依賴。

語法

add_dependencies(<target> [<target-dependency>]...)

主要參數(shù)說明

示例

add_dependencies(${target} build_${target})

30、add_subdirectory_if_exist

功能

添加一個子目錄并構(gòu)建該子目錄,子目錄下應(yīng)該包含CMakeLists.txt文件和代碼文件。

語法

add_subdirectory_if_exist (source_dir [binary_dir] [EXCLUDE_FROM_ALL])

主要參數(shù)說明

source_dir:必選參數(shù)。該參數(shù)指定一個子目錄,子目錄下應(yīng)該包含CMakeLists.txt文件和代碼文件。子目錄可以是相對路徑也可以是絕對路徑,如果是相對路徑,則是相對當(dāng)前目錄的一個相對路徑。

示例

add_subdirectory_if_exist(appstart)

總結(jié)

以上是生活随笔為你收集整理的cmakelist基本语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

天天综合网 天天综合色 | 免费在线观看日韩 | 天天插一插 | 国产成人福利在线 | 久久久五月婷婷 | 婷婷六月中文字幕 | 99精品久久久 | 久久综合综合久久综合 | 五月黄色 | 精品在线视频观看 | 国产精品免费观看国产网曝瓜 | 中文字幕a在线 | 免费观看一级视频 | 国产精品 久久 | 久久精品99国产精品酒店日本 | 一本一本久久a久久 | 国产精品成人aaaaa网站 | 日韩视频免费观看高清 | 欧美日韩久久不卡 | 国内精品久久久精品电影院 | 成人免费视频网 | 97av在线视频免费播放 | 激情视频在线高清看 | 最新色站 | 日韩极品视频在线观看 | 美女很黄免费网站 | 色亚洲网 | 国产精品一区二区在线播放 | 91香蕉嫩草 | 午夜久久电影网 | 日本中文字幕系列 | 人人射人人爽 | 黄色综合 | 久久成人亚洲欧美电影 | 天天操天天色天天射 | 日韩色一区二区三区 | 亚洲人毛片| 国产成人精品亚洲日本在线观看 | 91精品久久久久久粉嫩 | 在线看一级片 | 亚洲成 人精品 | 国产一级在线免费观看 | 国产精品久久久久永久免费看 | 欧美 日韩 国产 中文字幕 | 96亚洲精品久久久蜜桃 | 久操免费视频 | 免费黄a大片 | 日韩在线免费小视频 | 国产亚洲激情视频在线 | 欧美日韩国产二区三区 | 色婷婷视频在线观看 | 国产品久精国精产拍 | 狠狠88综合久久久久综合网 | 精品91久久久久 | 国产激情久久久 | 亚洲专区中文字幕 | 天堂av影院| 久久这里只有精品视频首页 | 中文字幕免费播放 | 日韩免费网站 | 97国产一区 | 国产麻豆精品久久一二三 | 欧美日韩视频在线播放 | 亚洲电影久久 | 中文字幕日韩av | 成人动漫一区二区三区 | av在线一级 | 天天做天天爽 | 亚洲成人频道 | 91看片成人 | 午夜影院日本 | 日本一区二区三区免费观看 | 国产麻豆视频 | 日韩一区二区三区在线观看 | 天天干夜夜夜操天 | 三级黄在线 | 91一区一区三区 | 五月天亚洲激情 | 国产99久久久国产精品成人免费 | 日韩精品视频网站 | 亚洲美女视频网 | 激情五月婷婷综合网 | 激情婷婷网 | 亚洲精品在线免费播放 | 亚洲综合精品视频 | 亚洲国产成人av网 | 国产成人精品一区二区三区福利 | 久久精品免视看 | 欧美人体xx| 亚洲精品综合在线 | 丝袜+亚洲+另类+欧美+变态 | 国产又粗又猛又爽又黄的视频免费 | 天天鲁一鲁摸一摸爽一爽 | 国产黄网在线 | 热99在线| 超碰在线cao | 欧美日韩免费一区二区三区 | 美女福利视频一区二区 | 免费a级毛片在线看 | www.久久爱.cn| 麻豆影视网站 | 国产人成在线视频 | 狠狠色噜噜狠狠狠狠2022 | 成年性视频 | 欧美午夜性 | 日本一区二区不卡高清 | 亚洲韩国一区二区三区 | 久久免费精品视频 | 超碰国产在线观看 | 91精品视频免费 | 欧洲在线免费视频 | 亚洲黄色大片 | 成人a免费 | 黄色看片 | 日韩影片在线观看 | 精品国产乱码久久久久久久 | 久久成人一区 | 久久精品亚洲一区二区三区观看模式 | 在线国产福利 | 久久成人人人人精品欧 | 91中文在线 | 亚洲91av| 日本三级人妇 | 日b黄色片 | 天天干天天干天天操 | 久久久久99999| 亚洲精品999| 一二三区av | 色综合夜色一区 | 日韩网站在线免费观看 | 精品在线亚洲视频 | 日日夜夜精品免费 | 久久国产精品系列 | 亚洲性视频| 欧美黄色软件 | 国产91全国探花系列在线播放 | 91九色视频在线观看 | 国模一区二区三区四区 | 亚洲免费不卡 | 蜜臀av一区 | 欧美肥妇free | 91在线国产观看 | 亚洲电影图片小说 | 久久国产剧场电影 | 91理论片午午伦夜理片久久 | 国产精品久久久久久久久久久久 | 园产精品久久久久久久7电影 | 国产精品久久久久久久久久三级 | 婷色在线| 免费视频一区二区 | 国产精品理论片在线观看 | 久久精品中文 | 日韩 在线a | 黄色电影网站在线观看 | 午夜av免费 | 国产手机av在线 | 久久久精品国产一区二区电影四季 | 97精品伊人 | 综合黄色网| 国产一级片免费视频 | 欧美日韩国产区 | 在线观看一级视频 | 九九热久久久 | 91精品国产乱码在线观看 | 狠狠色丁香婷婷综合久小说久 | 免费福利在线 | 黄色国产精品 | 91精品小视频 | 国产成人精品在线观看 | 国产小视频在线 | 色综合久久综合中文综合网 | 亚洲精品视频在线观看免费 | 高清久久久| 91成人亚洲| 视频一区二区精品 | 91精品电影 | 日韩欧美在线观看一区 | 91丨九色丨蝌蚪丨老版 | 成人动漫一区二区 | 日韩簧片在线观看 | 国产精品久久久久久久久久免费看 | 久久黄色影视 | 免费视频成人 | 亚洲精品国产自产拍在线观看 | 在线观看一区视频 | 欧美在线99 | 美女很黄免费网站 | 91精品视频免费看 | 精品在线观看国产 | 青青草国产成人99久久 | 一区二区三区四区五区在线视频 | 国产日产精品久久久久快鸭 | 在线小视频国产 | 四虎影视8848dvd | 亚洲天天在线 | 国产视频手机在线 | 欧美色图一区 | 欧美精品久久久久a | 欧美孕交vivoestv另类 | 天天拍天天爽 | 天堂网一区二区三区 | av电影一区二区 | 日韩欧美一区二区三区视频 | 国产黄 | 国产精品网址在线观看 | 国产精品久久久久久久久久免费看 | 激情五月婷婷综合网 | 亚洲欧美精品一区二区 | 日韩激情视频在线观看 | 久久久av电影 | 精品福利在线观看 | 黄色成人91| 在线看av网址 | 夜夜躁日日躁狠狠躁 | 91漂亮少妇露脸在线播放 | 在线播放一区 | 成人在线免费视频观看 | 精品伦理一区二区三区 | 91九色综合 | 狠狠操狠狠干天天操 | 午夜精品久久久久久99热明星 | 亚洲成人av免费 | 91桃色视频 | 免费看片成年人 | 又黄又爽又湿又无遮挡的在线视频 | 91免费在线看片 | 能在线观看的日韩av | 99精品视频99 | 久草在线视频新 | 99久久这里有精品 | www五月天| 国产精品视频地址 | 国产在线a不卡 | 国产精品久久久久久久免费大片 | 日韩欧美99 | 日韩视频在线不卡 | 成人综合婷婷国产精品久久免费 | 激情欧美日韩一区二区 | 天天干视频在线 | 日日干夜夜操视频 | 91一区二区三区在线观看 | 天天色宗合 | 久草免费在线观看视频 | av超碰免费在线 | 人人狠 | 精品亚洲一区二区三区 | 国产一级特黄电影 | 丁香五月亚洲综合在线 | 夜夜躁狠狠燥 | 国产精品九九九九九九 | 三级黄色免费片 | 免费在线激情视频 | 最近中文字幕mv免费高清在线 | 久久成人在线视频 | 久久久一本精品99久久精品66 | 天天综合网~永久入口 | 中国美女一级看片 | 天天插综合 | 中国黄色一级大片 | 黄污网站在线观看 | 亚洲第二色| 国产成人精品一区二区在线 | 97人人模人人爽人人少妇 | 久草在线最新视频 | 久久超碰网 | 韩日av在线 | 久久a热6 | 在线国产精品视频 | 偷拍精品一区二区三区 | 99久免费精品视频在线观看 | 免费一级片视频 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 久久视屏网 | 免费日韩一级片 | 亚洲黄色免费在线 | 99热 精品在线 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 美女黄视频免费看 | 国产麻豆传媒 | 女人魂免费观看 | 婷婷在线免费视频 | 国产一级片不卡 | 国产精品一区免费在线观看 | 97看片| 色av色av色av | 国产精品自产拍在线观看中文 | 91看片黄色 | 久草在线费播放视频 | 少妇搡bbbb搡bbb搡69 | 精品中文字幕在线观看 | 日韩国产欧美在线视频 | 992tv在线 | 午夜电影一区 | 啪嗒啪嗒免费观看完整版 | 国产精品麻豆99久久久久久 | 超碰97免费观看 | 国产艹b视频| 少妇bbbb搡bbbb桶 | 午夜12点 | 国产精品一区二区三区免费视频 | 欧美91在线 | 国产视频一区在线 | 久久精品成人 | 在线中文字幕观看 | 一区精品久久 | 看片的网址 | 免费中午字幕无吗 | 伊人五月天av | 免费在线观看成人小视频 | 黄污网 | 亚洲精欧美一区二区精品 | 成人黄色资源 | 最新色视频| 国产视频一二区 | 在线观看免费91 | 国产成人精品国内自产拍免费看 | 日韩毛片一区 | 亚洲一区二区视频在线播放 | 三级av免费| 精品主播网红福利资源观看 | 欧美日韩视频在线观看一区二区 | 亚洲精品在线观看的 | 美女av在线免费 | 人人澡av | 久久精品99国产精品日本 | 91精品在线观看视频 | 久久99国产精品久久 | 天天色天天射天天干 | 色91在线| 亚洲 中文 在线 精品 | 久久在线电影 | aaa亚洲精品一二三区 | 综合色天天 | 欧美亚洲一区二区在线 | 成人黄色大片网站 | 亚洲国内精品视频 | 激情av综合 | 人人看97| 免费在线黄色av | av色一区| 国产一级片网站 | 国产一级二级三级在线观看 | 欧美福利在线播放 | 日韩精品在线观看av | 欧美激情精品久久久久久免费印度 | av片中文 | 亚洲精品在线播放视频 | 国产亚洲精品久久久久久移动网络 | 日本中文字幕在线免费观看 | 国产精品一区二区av麻豆 | 天堂网av 在线 | 黄色小网站在线 | 最新中文字幕视频 | 国产高清在线免费 | 欧美性色综合网站 | 91在线永久| 亚洲精品在线观看不卡 | 国产资源站 | 一级黄网| 国产婷婷精品av在线 | 欧美激情精品 | 米奇影视7777 | 国产又粗又猛又爽又黄的视频免费 | 久久婷综合 | av直接看| 国产美女精品视频免费观看 | 丁香九月激情综合 | 不卡的av在线 | 女人高潮一级片 | 97在线观看 | 国产v在线 | 国产精品大片免费观看 | 日韩午夜一级片 | 欧美国产日韩一区二区三区 | 亚洲成av人片一区二区梦乃 | 久热av在线 | 亚洲,播放| 国产精品www | 天天色宗合 | 91精品亚洲影视在线观看 | av资源免费在线观看 | 国产不卡网站 | 欧美色图另类 | 天天摸天天干天天操天天射 | 国产亚洲日 | 中文在线中文a | 五月婷婷黄色网 | 亚洲国产高清视频 | 99免费观看视频 | 97在线观看 | av不卡免费看 | 成人sm另类专区 | 美女免费视频黄 | 国产精品久久二区 | 97在线看| 一级a性色生活片久久毛片波多野 | wwwav视频| 久久国内免费视频 | 日韩av男人的天堂 | 久久69精品 | 日韩综合视频在线观看 | 久久久久国产一区二区三区 | 欧美日韩国产精品一区二区亚洲 | 日韩在线中文字幕视频 | 91插插影库 | 97超级碰碰碰视频在线观看 | 亚洲精品国产欧美在线观看 | 看片一区二区三区 | 日韩中文字幕免费在线观看 | 探花视频免费在线观看 | 草久久影院| 国产精品亚洲精品 | 免费三级影片 | 精品久久网 | 欧美性大战久久久久 | 久久观看最新视频 | 久草成人在线 | 国产精品永久免费观看 | 欧美精品免费一区二区 | 五月婷婷六月丁香 | 成年人在线看片 | 久久国产欧美日韩 | 国产高清在线观看av | 又黄又爽的免费高潮视频 | 97人人爽| 人人射人人爽 | 久草视频在线观 | 日日干天天射 | 激情伊人五月天 | 久久久私人影院 | 国产精品毛片久久久久久久 | 亚洲成人一区 | 久久蜜臀一区二区三区av | 91桃色免费视频 | 日韩乱色精品一区二区 | 欧美精品天堂 | 99精品视频在线观看播放 | 久久久视频在线 | 久久国产一二区 | 日本动漫做毛片一区二区 | 超碰97人人在线 | 久久久精华网 | 久久精品中文字幕少妇 | 91免费网站在线观看 | 丁香婷婷网 | 91精品国自产在线偷拍蜜桃 | 欧美黑人性爽 | 一区二区免费不卡在线 | 久久精品99久久久久久2456 | 日韩精品在线免费播放 | 日韩精品在线免费观看 | 天天射天天干天天插 | 久久成人高清视频 | 国产麻豆电影 | 精品国产免费一区二区三区五区 | 婷婷色中文网 | 五月婷婷综合色拍 | 国产精品久久久久久久久久ktv | 国产精品网红福利 | 精品一区在线 | 99re亚洲国产精品 | 在线看片日韩 | 精品国产亚洲在线 | 亚洲全部视频 | www.av小说| 国产在线观看网站 | 国产精品嫩草在线 | 国产亚洲精品日韩在线tv黄 | 国产视频1区2区 | 久久视频在线观看免费 | 国产大尺度视频 | 丝袜精品视频 | 中文字幕第一页在线vr | 免费看黄在线 | 三级动态视频在线观看 | 亚洲欧美在线观看视频 | a级成人毛片 | 久久久www免费电影网 | 激情婷婷网 | 色播五月激情五月 | 国产九色视频在线观看 | 久久久久久久久久久久国产精品 | 精品国产久 | 特级西西444www高清大视频 | av国产在线观看 | 精品在线播放视频 | 日韩视频免费 | 色吧av色av | 久久精品一二三 | 91尤物在线播放 | 欧洲精品在线视频 | 久久久久 | 日韩在线观看一区二区 | 久久深夜福利免费观看 | 日韩久久在线 | 欧美一级视频免费 | 视频 国产区| bayu135国产精品视频 | 成人黄色在线视频 | 精品国产伦一区二区三区观看方式 | 日本久久久久 | 久久综合免费视频影院 | 亚洲精品成人在线 | 国产区精品视频 | 久久99久久99久久 | 黄色三级免费看 | 69av在线视频| 免费黄色网址大全 | 国产乱码精品一区二区三区介绍 | 久久99热国产 | 午夜精品久久久 | 91精品国产亚洲 | 六月色婷婷 | 91大神一区二区三区 | 国产欧美日韩视频 | 国产中文在线播放 | 欧洲精品视频一区 | 在线免费高清一区二区三区 | 久久免费观看少妇a级毛片 久久久久成人免费 | 国产精品一区二区免费看 | 亚洲欧美日韩精品久久奇米一区 | 国产免费观看高清完整版 | av高清一区 | 香蕉久草在线 | 国产成人黄色网址 | 99精品色 | 又黄又爽的免费高潮视频 | 伊人成人激情 | 国产精品成人免费 | 色噜噜在线观看视频 | 久久久精品福利视频 | 日本精品午夜 | 天堂网av 在线 | 国产99久久久国产精品免费看 | 日韩二区三区在线观看 | 最近的中文字幕大全免费版 | 国产精品嫩草影院123 | 免费视频97 | 亚洲一区二区天堂 | 日本字幕网 | 亚洲一级在线观看 | 欧美性生活免费 | 午夜.dj高清免费观看视频 | 久久不卡国产精品一区二区 | 色福利网 | 亚洲精品大全 | 国产在线视频在线观看 | 天堂av在线网 | 久久免费片| 亚洲欧美国产精品久久久久 | 久久视频国产精品免费视频在线 | 国产97在线视频 | 在线天堂日本 | 一级免费看视频 | 97在线观看免费观看 | 久久99视频免费 | 狠狠狠狠狠操 | 亚洲精品1234区 | 五月天久久综合网 | 一区二区三区手机在线观看 | 五月天久久婷婷 | 婷婷丁香激情 | 丁香综合激情 | 欧美一区二区三区激情视频 | 精品在线播放视频 | 天天插天天狠 | 五月天婷婷在线视频 | 中文字幕成人在线观看 | 国产精品久久久久久爽爽爽 | 日日夜夜天天人人 | 国内精品视频在线 | 国产一级a毛片视频爆浆 | 日韩精品一区二区在线观看视频 | 国产亚洲片 | 日韩一二区在线观看 | av经典在线 | 99riav1国产精品视频 | 在线观看中文字幕av | 亚洲永久国产精品 | 伊人久操 | 丁香五婷| 99久热在线精品视频 | 欧美在线视频一区二区 | 免费av网址大全 | 韩国一区二区在线观看 | 亚洲jizzjizz日本少妇 | 久久福利精品 | 六月丁香激情综合 | 欧美激情视频在线免费观看 | 国产一区视频免费在线观看 | 韩日三级在线 | 97香蕉久久国产在线观看 | 在线观看视频黄色 | 免费看片网页 | 天天综合狠狠精品 | 欧美乱码精品一区 | 91系列在线 | 国产一区在线视频 | www最近高清中文国语在线观看 | 日日干av| 日韩簧片在线观看 | 成人av电影在线观看 | 国产欧美精品一区二区三区四区 | 91视频成人免费 | 激情五月婷婷综合 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产精品毛片一区二区在线 | 毛片3| 伊人夜夜| 婷婷av网| 久久tv| 视频在线观看99 | 91mv.cool在线观看 | 国产精品久久久久三级 | 亚欧日韩av | 精品福利av | 欧美激情奇米色 | 热99在线| 久久成 | 国产小视频在线免费观看视频 | 久久精品视| 精品视频在线免费 | 五月婷婷黄色 | 中文字幕在线观看免费高清完整版 | 久久国产精品影片 | 亚洲国产高清在线观看视频 | 亚洲高清国产视频 | 亚洲日日射 | 99久久久国产精品美女 | 亚洲日韩精品欧美一区二区 | 国产在线观看a | 亚洲九九影院 | 国产成人在线播放 | 日韩一区二区久久 | 国产在线看一区 | 九九九热精品免费视频观看网站 | 久久亚洲美女 | 久久精国产 | 日韩二区在线观看 | 深夜免费福利视频 | www.久久婷婷 | 亚洲 欧美 精品 | 欧美一区在线看 | 久青草视频在线观看 | 在线看国产一区 | 久免费 | 日韩精品黄| 久久午夜视频 | 日本激情视频中文字幕 | 不卡精品视频 | 日韩在线播放视频 | 欧美网址在线观看 | 亚洲天堂在线观看完整版 | 欧美色道 | 中文在线中文资源 | 久久久久欧美精品 | 国产91探花| 国产成人精品区 | 激情综合色图 | av一区二区三区在线播放 | 韩国三级在线一区 | 亚洲综合色视频 | 久久精品www人人爽人人 | 色九九影院 | 国产在线美女 | 国产精品一区二区三区在线 | 国产一二三区在线观看 | 日韩在线视频网址 | 涩涩伊人 | 精品女同一区二区三区在线观看 | 亚洲综合婷婷 | 午夜私人影院 | 亚洲一区黄色 | 国产 日韩 在线 亚洲 字幕 中文 | 国产福利电影网址 | 18女毛片 | 国产精品福利在线播放 | 久久久久国产a免费观看rela | 亚洲婷婷丁香 | 8x成人免费视频 | 亚洲视频精选 | 国产三级国产精品国产专区50 | 一本到视频在线观看 | 亚洲高清资源 | 日韩字幕| 国产精品白丝jk白祙 | 成人h动漫精品一区二 | 午夜在线免费视频 | 色噜噜在线观看 | 欧美在线你懂的 | 久久国产精品色av免费看 | 亚洲精品在线观看不卡 | 天天爱天天操 | 亚洲精品资源在线观看 | 久久免费看av| 粉嫩av一区二区三区免费 | 99精品免费久久久久久久久 | 午夜视频在线观看一区二区 | 超碰在线人 | 免费av在线网站 | 狠狠狠狠狠狠 | 国产精品久久久久久久久久尿 | 久久久久久久久久久久影院 | 韩国av免费观看 | av成人在线看 | 91视频这里只有精品 | 欧美日韩一区久久 | 欧美精品在线观看 | 成人xxxx| 久久国产精品成人免费浪潮 | 婷婷综合亚洲 | 国产69精品久久久久久 | 成年人免费电影 | 日韩av一区二区在线影视 | 国产精品久久久久久久久久了 | 美女黄视频免费 | 在线日韩精品视频 | 国产又黄又硬又爽 | 天天干国产 | 欧美一级片 | 人人要人人澡人人爽人人dvd | 一区二区三区四区免费视频 | 国产精品毛片一区视频 | 日日干天天爽 | 天天躁日日躁狠狠躁av中文 | 久久精品99国产国产精 | www.香蕉视频 | 黄网站色欧美视频 | 91精品一区二区三区蜜臀 | 亚洲国产精品电影在线观看 | 久久视频这里有精品 | 精品一区二区在线看 | 免费一级黄色 | 国产精品女同一区二区三区久久夜 | av免费观看网址 | 激情五月综合网 | 在线三级播放 | 91女人18片女毛片60分钟 | 不卡的av在线播放 | 日韩高清不卡一区二区三区 | 色七七亚洲影院 | 久久精品视频免费观看 | 日本精品视频一区二区 | 天天做天天射 | www.人人草 | 久久专区| 国产精品2018 | 久久视奸 | 免费成人在线网站 | 伊人久久在线观看 | 国产 日韩 在线 亚洲 字幕 中文 | a v在线视频 | 日本在线中文 | 中文字幕免费在线看 | 91激情视频在线观看 | 婷久久| 精品久久久亚洲 | 国产视频一二区 | 九色在线视频 | 国产精品久久艹 | av高清在线 | 在线小视频 | 麻豆传媒视频在线播放 | 日韩精品视 | 久久视频国产精品免费视频在线 | 久久都是精品 | 六月丁香在线视频 | 久久精品亚洲国产 | 91成人网在线观看 | 香蕉视频免费看 | 成人网看片 | 国产成人精品一区二区 | 欧美少妇xxx | 日韩r级在线 | 一级黄色片在线 | 米奇四色影视 | 亚洲精品免费在线视频 | 久久国产免费视频 | 久久国产精品一区二区 | 国内视频在线 | 91免费视频黄 | 欧美高清视频不卡网 | 九九免费在线看完整版 | 狠狠操狠狠操 | 韩国av免费在线观看 | 亚洲国产精久久久久久久 | 国产尤物在线 | 99草视频在线观看 | 国产黄色片一级 | 99热在线这里只有精品 | 久久久久女人精品毛片九一 | 久久这里只有精品首页 | 亚洲h在线播放在线观看h | 久久精品看 | 日韩精品一区二区三区第95 | 国产成人a亚洲精品v | 日本精品一区二区在线观看 | 久久久麻豆| 五月综合 | av日韩在线网站 | 中文超碰字幕 | 在线免费视频你懂的 | 国产精品国产三级国产专区53 | 亚洲一区尤物 | 午夜精品久久久久久99热明星 | 国产精品免费一区二区三区在线观看 | 在线观看视频97 | 在线导航av | 国产免费不卡 | 日韩欧美xx | 国产色资源 | 中文字幕在线观看网址 | 日韩高清精品一区二区 | 成人一区在线观看 | 精品99视频 | 免费在线观看一区二区三区 | 欧美成人黄 | 亚洲一二三在线 | 中国一级片免费看 | av成人资源| 久久久久久国产精品免费 | 久久久久免费精品 | 日韩久久精品一区二区 | 色视频成人在线观看免 | 国产精品18久久久久久久 | 国产一级一片免费播放放 | 欧美另类成人 | 久久亚洲私人国产精品 | 中文字幕 国产专区 | 国产小视频在线免费观看视频 | 99热这里只有精品1 av中文字幕日韩 | 国产色在线视频 | 最近中文字幕国语免费av | 国产高清免费在线播放 | 视频在线99 | 国产精品久久久777 成人手机在线视频 | 欧美精品一二三 | 深爱婷婷网 | 五月婷婷亚洲 | www成人精品 | 久操视频在线免费看 | 国产91av视频在线观看 | 国产a级精品 | 69xx视频| 国产黄色看片 | 中文字幕第一页在线视频 | 成人97人人超碰人人99 | 婷婷亚洲最大 | 中文字幕亚洲情99在线 | 日韩免费网站 | 日韩xxxx视频 | 久久久国产一区二区三区四区小说 | 国产99久久| 日本三级香港三级人妇99 | 99久久超碰中文字幕伊人 | 久久久鲁 | 久久精品影片 | 亚洲成人午夜av | 亚洲草视频 | 午夜精品久久久久久99热明星 | 成人在线小视频 | 午夜av大片| 亚洲伊人第一页 | 成av在线| 免费看黄视频 | 国内亚洲精品 | 国产91大片 | 一级特黄av| 永久免费看av | 久久久国产成人 | 九九热视频在线免费观看 | 亚洲撸撸 | 免费视频91蜜桃 | 国产黄色精品 | 国产青春久久久国产毛片 | 在线天堂v | 国产成人99久久亚洲综合精品 | 国产一二区免费视频 | 91av在线国产| 97国产情侣爱久久免费观看 | 美女视频黄频大全免费 | 激情欧美在线观看 | 狠狠操狠狠干天天操 | 我要色综合天天 | 亚洲国产97在线精品一区 | 一本一本久久a久久精品牛牛影视 | 九九99| 成人av在线一区二区 | 国产免费专区 | 精品国产乱码久久久久久三级人 | 国产精品久久久久久久久久免费看 | 最新国产在线 | 日韩欧美精品一区二区 | 天天操天天干天天爽 | 欧美日韩在线视频一区 | 日韩精品一区二区在线视频 | 亚洲五月综合 | 午夜精品电影一区二区在线 | 亚洲最大在线视频 | 午夜视频在线观看网站 | 色综合夜色一区 | 国产亚洲精品女人久久久久久 | 91视频在线看 | 天天操天天添天天吹 | 久久五月婷婷丁香社区 | 精品一区二区电影 | 日韩色高清 | 国产一级精品绿帽视频 | 337p日本大胆噜噜噜噜 | 国产一级免费观看视频 | 超碰在线最新地址 | 午夜婷婷在线播放 | 免费观看全黄做爰大片国产 | 国产婷婷一区二区 | 中文字幕高清免费日韩视频在线 | 免费a网址 | 免费av视屏 | 国产一级免费电影 | 69视频在线播放 | 国产精品久久久久久av | 91成人免费电影 | 中文字幕色站 | 日韩欧美在线不卡 | 成人精品99 | 精品一区精品二区 | 日本中文乱码卡一卡二新区 | 欧美少妇xxxxxx | 亚洲成人资源在线 | 99精品视频精品精品视频 | 亚洲乱码精品久久久 | 四虎5151久久欧美毛片 | 六月婷婷久香在线视频 | 国产成人精品久久亚洲高清不卡 | 中文字幕一区二区三区四区在线视频 | 国产在线观看高清视频 | 日本在线成人 | 国产这里只有精品 | 欧美一区二区精品在线 | 77国产精品 | 精品专区| 色综合久久中文综合久久牛 | 色狠狠久久av五月综合 | 欧美亚洲xxx | 在线观看视频免费播放 | www.com久久久 | 日韩亚洲国产中文字幕 | 精品久久久国产 | 91麻豆操 | 亚洲理论片在线观看 | 成人国产电影在线观看 | 亚洲综合日韩在线 | 婷婷天天色| 亚洲美女在线一区 | 天堂黄色片 | 麻豆av一区二区三区在线观看 | 久久伊人精品天天 | 天天爱av导航 | 免费久久精品视频 | 久久久国产精品一区二区三区 | 欧美色综合天天久久综合精品 | 欧美另类网站 | 麻豆视频免费入口 | 国产精品精品久久久久久 | 国产成人精品一区二 | 亚洲欧美视频在线 | 中文字幕高清免费日韩视频在线 | 五月天av在线 | 精品国产伦一区二区三区 | 国产精品久久久久久久久久 | 久久午夜影院 | 国产精品高清免费在线观看 | 成 人 黄 色 片 在线播放 | 亚洲资源一区 | 国内三级在线观看 | 国产免码va在线观看免费 | 手机看片国产 | 中文字幕在线视频第一页 | 91在线看片| 日韩免费二区 | 天天做天天爱天天综合网 | 国产精品麻豆欧美日韩ww | 久久亚洲在线 | 日韩精品亚洲专区在线观看 | 国产高清在线免费观看 | 中文成人字幕 | 国产日韩欧美在线影视 | 日日干夜夜骑 | 日韩成人精品一区二区 | 国产精品美女在线观看 | 二区三区毛片 | 色国产精品 | 亚洲a成人v | www五月天婷婷 | 国产91aaa| 五月天激情综合 | 91精品久久久久久 | 激情五月婷婷激情 | 天天射天天色天天干 |