Cmake 入門簡介

2021-02-15 lumangnote
一、 什麼是CMake

CMake是一個比make更高級的編譯配置工具,支持不同平臺、不同的編譯器,生成相應的Makefile或者vcproj項目(virtual studio 項目文件)。

通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。CMake自動生成的Makefile不僅可以通過make命令構建項目生成目標文件,還支持安裝(make install)、測試安裝的程序是否能正確執行(make test,或者ctest)、生成當前平臺的安裝包(make package)、生成源碼包(make package_source)、產生Dashboard顯示數據並上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多複雜的功能,包括寫測試用例。如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。

二、 CMake下載安裝

下載地址 https://cmake.org/download/

window版直接點擊「下一步」
安裝完成效果

三 CMake基本使用和語法1、 command

command (args …)

command 是命令名,大小寫無關(注意:變量是大小寫相關的)

args 是參數,參數如果有空格,應該用雙引號括起來

變量引用用${VAR}語法

set命令

可以將多變量可以放在一起,合成為一個變量,如下所示

set(Foo a b c)
command(${Foo})=command(a b c)<br>command("${Foo}")=command("a b c")

CMake可以直接獲取系統環境變量和Windows註冊值。為了獲取系統環境變量,需要語法

$ENV{VAR}

四、 Hello World

創建文件夾

mkdir hello

vi CmakeList.txt

CMakeLists.txt文件中,最簡單的版本,

project(Hello)
add_executable(Hello Hello.c)

下面還有一個複雜一些的版本

cmake_minimum_required (2.6)
project (HELLO)
set (HELLO_SRCS Hello.c File2.c File3.c)
if (win32)
    set (HELLO_SRCS ${HELLO_SRCS} WinSupport.c)
else ()
    set (HELLO_SRCS  ${HELLO_SRCS} UnixSupport.c)
endif ()

add_executable (Hello ${HELLO_SRCS})

#look for Tcl library
find_library (TCL_LIBRARY NAMES tcl tcl84 tcl83 tcl82 tcl80 PATHS /usr/lib /usr/local/lib)

if (TCL_LIBRARY)
    target_link_library (HELLO ${TCL_LIBRARY})
endif ()

五、 Run Cmake

cdHello cmake ..

$ make

六 CMake幫助文檔

cmake.exe --help

我們可以查看cmake幫助,這個很全
顯示cmake的指令

cmake.exe --help-command-list

add_compile_options
add_custom_command
add_custom_target
add_definitions
add_dependencies
add_executable
add_library
add_subdirectory
add_test
aux_source_directory
break
build_command
build_name
cmake_host_system_information
cmake_minimum_required
cmake_policy
configure_file
continue
create_test_sourcelist
ctest_build
ctest_configure
ctest_coverage
ctest_empty_binary_directory
ctest_memcheck
ctest_read_custom_files
ctest_run_script
ctest_sleep
ctest_start
ctest_submit
ctest_test
ctest_update
ctest_upload
define_property
else
elseif
enable_language
enable_testing
endforeach
endfunction
endif
endmacro
endwhile
exec_program
execute_process
export
export_library_dependencies
file
find_file
find_library
find_package
find_path
find_program
fltk_wrap_ui
foreach
function
get_cmake_property
get_directory_property
get_filename_component
get_property
get_source_file_property
get_target_property
get_test_property
if
include
include_directories
include_external_msproject
include_regular_expression
install
install_files
install_programs
install_targets
link_directories
link_libraries
list
load_cache
load_command
macro
make_directory
mark_as_advanced
math
message
option
output_required_files
project
qt_wrap_cpp
qt_wrap_ui
remove
remove_definitions
return
separate_arguments
set
set_directory_properties
set_property
set_source_files_properties
set_target_properties
set_tests_properties
site_name
source_group
string
subdir_depends
subdirs
target_compile_definitions
target_compile_features
target_compile_options
target_include_directories
target_link_libraries
target_sources
try_compile
try_run
unset
use_mangled_mesa
utility_source
variable_requires
variable_watch
while
write_file

cmake定義的變量

cmake.exe --help-variable-list

<PROJECT-NAME>_BINARY_DIR
<PROJECT-NAME>_SOURCE_DIR
<PROJECT-NAME>_VERSION
<PROJECT-NAME>_VERSION_MAJOR
<PROJECT-NAME>_VERSION_MINOR
<PROJECT-NAME>_VERSION_PATCH
<PROJECT-NAME>_VERSION_TWEAK
APPLE
BORLAND
BUILD_SHARED_LIBS
CMAKE_<CONFIG>_POSTFIX
CMAKE_<LANG>_ARCHIVE_APPEND
CMAKE_<LANG>_ARCHIVE_CREATE
CMAKE_<LANG>_ARCHIVE_FINISH
CMAKE_<LANG>_COMPILER
CMAKE_<LANG>_COMPILER_ABI
CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN
CMAKE_<LANG>_COMPILER_ID
CMAKE_<LANG>_COMPILER_LOADED
CMAKE_<LANG>_COMPILER_TARGET
CMAKE_<LANG>_COMPILER_VERSION
CMAKE_<LANG>_COMPILE_OBJECT
CMAKE_<LANG>_CREATE_SHARED_LIBRARY
CMAKE_<LANG>_CREATE_SHARED_MODULE
CMAKE_<LANG>_CREATE_STATIC_LIBRARY
CMAKE_<LANG>_FLAGS
CMAKE_<LANG>_FLAGS_DEBUG
CMAKE_<LANG>_FLAGS_MINSIZEREL
CMAKE_<LANG>_FLAGS_RELEASE
CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
CMAKE_<LANG>_IGNORE_EXTENSIONS
CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES
CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES
CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES
CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES
CMAKE_<LANG>_LIBRARY_ARCHITECTURE
CMAKE_<LANG>_LINKER_PREFERENCE
CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES
CMAKE_<LANG>_LINK_EXECUTABLE
CMAKE_<LANG>_OUTPUT_EXTENSION
CMAKE_<LANG>_PLATFORM_ID
CMAKE_<LANG>_SIMULATE_ID
CMAKE_<LANG>_SIMULATE_VERSION
CMAKE_<LANG>_SIZEOF_DATA_PTR
CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS
CMAKE_<LANG>_VISIBILITY_PRESET
CMAKE_ABSOLUTE_DESTINATION_FILES
CMAKE_ANDROID_API
CMAKE_ANDROID_API_MIN
CMAKE_ANDROID_GUI
CMAKE_APPBUNDLE_PATH
CMAKE_AR
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
CMAKE_ARGC
CMAKE_ARGV0
CMAKE_AUTOMOC
CMAKE_AUTOMOC_MOC_OPTIONS
CMAKE_AUTOMOC_RELAXED_MODE
CMAKE_AUTORCC
CMAKE_AUTORCC_OPTIONS
CMAKE_AUTOUIC
CMAKE_AUTOUIC_OPTIONS
CMAKE_BACKWARDS_COMPATIBILITY
CMAKE_BINARY_DIR
CMAKE_BUILD_TOOL
CMAKE_BUILD_TYPE
CMAKE_BUILD_WITH_INSTALL_RPATH
CMAKE_CACHEFILE_DIR
CMAKE_CACHE_MAJOR_VERSION
CMAKE_CACHE_MINOR_VERSION
CMAKE_CACHE_PATCH_VERSION
CMAKE_CFG_INTDIR
CMAKE_CL_64
CMAKE_COLOR_MAKEFILE
CMAKE_COMMAND
CMAKE_COMPILER_2005
CMAKE_COMPILER_IS_GNU<LANG>
CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
CMAKE_CONFIGURATION_TYPES
CMAKE_CROSSCOMPILING
CMAKE_CTEST_COMMAND
CMAKE_CURRENT_BINARY_DIR
CMAKE_CURRENT_LIST_DIR
CMAKE_CURRENT_LIST_FILE
CMAKE_CURRENT_LIST_LINE
CMAKE_CURRENT_SOURCE_DIR
CMAKE_CXX_COMPILE_FEATURES
CMAKE_CXX_EXTENSIONS
CMAKE_CXX_STANDARD
CMAKE_CXX_STANDARD_REQUIRED
CMAKE_C_COMPILE_FEATURES
CMAKE_C_EXTENSIONS
CMAKE_C_STANDARD
CMAKE_C_STANDARD_REQUIRED
CMAKE_DEBUG_POSTFIX
CMAKE_DEBUG_TARGET_PROPERTIES
CMAKE_DISABLE_FIND_PACKAGE_<PackageName>
CMAKE_DL_LIBS
CMAKE_EDIT_COMMAND
CMAKE_ERROR_DEPRECATED
CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
CMAKE_EXECUTABLE_SUFFIX
CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS_<CONFIG>
CMAKE_EXPORT_NO_PACKAGE_REGISTRY
CMAKE_EXTRA_GENERATOR
CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
CMAKE_FIND_LIBRARY_PREFIXES
CMAKE_FIND_LIBRARY_SUFFIXES
CMAKE_FIND_NO_INSTALL_PREFIX
CMAKE_FIND_PACKAGE_NAME
CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY
CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY
CMAKE_FIND_PACKAGE_WARN_NO_MODULE
CMAKE_FIND_ROOT_PATH
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY
CMAKE_FIND_ROOT_PATH_MODE_PACKAGE
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM
CMAKE_FRAMEWORK_PATH
CMAKE_Fortran_FORMAT
CMAKE_Fortran_MODDIR_DEFAULT
CMAKE_Fortran_MODDIR_FLAG
CMAKE_Fortran_MODOUT_FLAG
CMAKE_Fortran_MODULE_DIRECTORY
CMAKE_GENERATOR
CMAKE_GENERATOR_PLATFORM
CMAKE_GENERATOR_TOOLSET
CMAKE_GNUtoMS
CMAKE_HOME_DIRECTORY
CMAKE_HOST_APPLE
CMAKE_HOST_SYSTEM
CMAKE_HOST_SYSTEM_NAME
CMAKE_HOST_SYSTEM_PROCESSOR
CMAKE_HOST_SYSTEM_VERSION
CMAKE_HOST_UNIX
CMAKE_HOST_WIN32
CMAKE_IGNORE_PATH
CMAKE_IMPORT_LIBRARY_PREFIX
CMAKE_IMPORT_LIBRARY_SUFFIX
CMAKE_INCLUDE_CURRENT_DIR
CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE
CMAKE_INCLUDE_DIRECTORIES_BEFORE
CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE
CMAKE_INCLUDE_PATH
CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
CMAKE_INSTALL_MESSAGE
CMAKE_INSTALL_NAME_DIR
CMAKE_INSTALL_PREFIX
CMAKE_INSTALL_RPATH
CMAKE_INSTALL_RPATH_USE_LINK_PATH
CMAKE_INTERNAL_PLATFORM_ABI
CMAKE_JOB_POOL_COMPILE
CMAKE_JOB_POOL_LINK
CMAKE_LIBRARY_ARCHITECTURE
CMAKE_LIBRARY_ARCHITECTURE_REGEX
CMAKE_LIBRARY_OUTPUT_DIRECTORY
CMAKE_LIBRARY_PATH
CMAKE_LIBRARY_PATH_FLAG
CMAKE_LINK_DEF_FILE_FLAG
CMAKE_LINK_DEPENDS_NO_SHARED
CMAKE_LINK_INTERFACE_LIBRARIES
CMAKE_LINK_LIBRARY_FILE_FLAG
CMAKE_LINK_LIBRARY_FLAG
CMAKE_LINK_LIBRARY_SUFFIX
CMAKE_MACOSX_BUNDLE
CMAKE_MACOSX_RPATH
CMAKE_MAJOR_VERSION
CMAKE_MAKE_PROGRAM
CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
CMAKE_MATCH_COUNT
CMAKE_MFC_FLAG
CMAKE_MINIMUM_REQUIRED_VERSION
CMAKE_MINOR_VERSION
CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS_<CONFIG>
CMAKE_MODULE_PATH
CMAKE_NOT_USING_CONFIG_FLAGS
CMAKE_NO_BUILTIN_CHRPATH
CMAKE_NO_SYSTEM_FROM_IMPORTED
CMAKE_OBJECT_PATH_MAX
CMAKE_OSX_ARCHITECTURES
CMAKE_OSX_DEPLOYMENT_TARGET
CMAKE_OSX_SYSROOT
CMAKE_PARENT_LIST_FILE
CMAKE_PATCH_VERSION
CMAKE_PDB_OUTPUT_DIRECTORY
CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>
CMAKE_POLICY_DEFAULT_CMP<NNNN>
CMAKE_POLICY_WARNING_CMP<NNNN>
CMAKE_POSITION_INDEPENDENT_CODE
CMAKE_PREFIX_PATH
CMAKE_PROGRAM_PATH
CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE
CMAKE_PROJECT_NAME
CMAKE_RANLIB
CMAKE_ROOT
CMAKE_RUNTIME_OUTPUT_DIRECTORY
CMAKE_SCRIPT_MODE_FILE
CMAKE_SHARED_LIBRARY_PREFIX
CMAKE_SHARED_LIBRARY_SUFFIX
CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
CMAKE_SHARED_MODULE_PREFIX
CMAKE_SHARED_MODULE_SUFFIX
CMAKE_SIZEOF_VOID_P
CMAKE_SKIP_BUILD_RPATH
CMAKE_SKIP_INSTALL_ALL_DEPENDENCY
CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RULES
CMAKE_SKIP_RPATH
CMAKE_SOURCE_DIR
CMAKE_STAGING_PREFIX
CMAKE_STANDARD_LIBRARIES
CMAKE_STATIC_LIBRARY_PREFIX
CMAKE_STATIC_LIBRARY_SUFFIX
CMAKE_STATIC_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS_<CONFIG>
CMAKE_SYSROOT
CMAKE_SYSTEM
CMAKE_SYSTEM_IGNORE_PATH
CMAKE_SYSTEM_INCLUDE_PATH
CMAKE_SYSTEM_LIBRARY_PATH
CMAKE_SYSTEM_NAME
CMAKE_SYSTEM_PREFIX_PATH
CMAKE_SYSTEM_PROCESSOR
CMAKE_SYSTEM_PROGRAM_PATH
CMAKE_SYSTEM_VERSION
CMAKE_TOOLCHAIN_FILE
CMAKE_TRY_COMPILE_CONFIGURATION
CMAKE_TWEAK_VERSION
CMAKE_USER_MAKE_RULES_OVERRIDE
CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>
CMAKE_USE_RELATIVE_PATHS
CMAKE_VERBOSE_MAKEFILE
CMAKE_VERSION
CMAKE_VISIBILITY_INLINES_HIDDEN
CMAKE_VS_DEVENV_COMMAND
CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
CMAKE_VS_MSBUILD_COMMAND
CMAKE_VS_MSDEV_COMMAND
CMAKE_VS_NsightTegra_VERSION
CMAKE_VS_PLATFORM_NAME
CMAKE_VS_PLATFORM_TOOLSET
CMAKE_WARN_DEPRECATED
CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
CMAKE_WIN32_EXECUTABLE
CMAKE_XCODE_ATTRIBUTE_<an-attribute>
CMAKE_XCODE_PLATFORM_TOOLSET
CPACK_ABSOLUTE_DESTINATION_FILES
CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY
CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION
CPACK_INCLUDE_TOPLEVEL_DIRECTORY
CPACK_INSTALL_SCRIPT
CPACK_PACKAGING_INSTALL_PREFIX
CPACK_SET_DESTDIR
CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION
CTEST_BINARY_DIRECTORY
CTEST_BUILD_COMMAND
CTEST_BUILD_NAME
CTEST_BZR_COMMAND
CTEST_BZR_UPDATE_OPTIONS
CTEST_CHECKOUT_COMMAND
CTEST_CONFIGURATION_TYPE
CTEST_CONFIGURE_COMMAND
CTEST_COVERAGE_COMMAND
CTEST_COVERAGE_EXTRA_FLAGS
CTEST_CURL_OPTIONS
CTEST_CVS_CHECKOUT
CTEST_CVS_COMMAND
CTEST_CVS_UPDATE_OPTIONS
CTEST_DROP_LOCATION
CTEST_DROP_METHOD
CTEST_DROP_SITE
CTEST_DROP_SITE_CDASH
CTEST_DROP_SITE_PASSWORD
CTEST_DROP_SITE_USER
CTEST_GIT_COMMAND
CTEST_GIT_UPDATE_CUSTOM
CTEST_GIT_UPDATE_OPTIONS
CTEST_HG_COMMAND
CTEST_HG_UPDATE_OPTIONS
CTEST_MEMORYCHECK_COMMAND
CTEST_MEMORYCHECK_COMMAND_OPTIONS
CTEST_MEMORYCHECK_SANITIZER_OPTIONS
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
CTEST_MEMORYCHECK_TYPE
CTEST_NIGHTLY_START_TIME
CTEST_P4_CLIENT
CTEST_P4_COMMAND
CTEST_P4_OPTIONS
CTEST_P4_UPDATE_OPTIONS
CTEST_SCP_COMMAND
CTEST_SITE
CTEST_SOURCE_DIRECTORY
CTEST_SVN_COMMAND
CTEST_SVN_OPTIONS
CTEST_SVN_UPDATE_OPTIONS
CTEST_TEST_TIMEOUT
CTEST_TRIGGER_SITE
CTEST_UPDATE_COMMAND
CTEST_UPDATE_OPTIONS
CTEST_UPDATE_VERSION_ONLY
CTEST_USE_LAUNCHERS
CYGWIN
ENV
EXECUTABLE_OUTPUT_PATH
LIBRARY_OUTPUT_PATH
MINGW
MSVC
MSVC10
MSVC11
MSVC12
MSVC14
MSVC60
MSVC70
MSVC71
MSVC80
MSVC90
MSVC_IDE
MSVC_VERSION
PROJECT_BINARY_DIR
PROJECT_NAME
PROJECT_SOURCE_DIR
PROJECT_VERSION
PROJECT_VERSION_MAJOR
PROJECT_VERSION_MINOR
PROJECT_VERSION_PATCH
PROJECT_VERSION_TWEAK
UNIX
WIN32
WINCE
WINDOWS_PHONE
WINDOWS_STORE
XCODE_VERSION

七 cmake 項目推薦

obs-studio 開源推流軟體,支持支持直播,錄屏
github地址

https://github.com/lumang/tblive

https://github.com/lumang/obs-studio

具體項目中的cmake使用說明參考readme中的文件說明 

相關焦點

  • cmake簡介
    linux下的make,windows下的nmake,以及更加高級的automake,autoconf,cmake,ant等等都屬於自動構建系統2. make簡介make是一種較為早期的自動構建系統,斯圖亞特·費爾德曼1977年在貝爾實驗室裡製作了這個軟體。現在我們所說的make一般是指linux下的GNU make。
  • CMAKE入門實戰
    0.導語最近做的項目使用CLION構建,而這個採用CMakeLists.txt管理,因此為了更好的學習,故找到了一篇大牛級別的入門文章,有文章有代碼
  • CMake入門
    mkdir build && cd buildcmake ..makemake install在這個例子中,我們建了一個 build 文件夾用於執行 cmake 指令,這種做法叫做外部編譯(out-of-source-build)。注意 cmake .. 這後邊有個 .. 這是用於告訴 CMAKE CMakeLists.txt 在哪個文件夾下。
  • Ubuntu 18.04下安裝最新CMake及CMake簡單使用
    cmake所做的事其實就是告訴編譯器如何去編譯連結原始碼。你也許想問不是有makefile嗎,為什麼還要它?這裡就牽涉到跨平臺問題。在Windows平臺下是通過project文件去管理這些的,如果不用cmake,那我們為Windows和Linux系統就要寫對應的project文件和makefile文件,這無疑是一件繁瑣的事,而我們只要編寫一次cmake,就可以用在各個平臺,而且其語法也簡單。
  • CMake使用入門
    例子cmake_minimum_required(VERSION 3.13)project(HelloWorld)add_library(hello_world STATIC
  • 實用 | 使用Cmake快速生成visual studio工程
    最近工作中需要把項目嵌入式Linux平臺代碼移到Windows上做仿真模擬,需要解決三個問題:本篇筆記分享搭建工程的實操:二、簡介 CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。
  • 跨平臺開發編譯必備——CMake入門指南
    << std::endl; return 0;}CMakeLists.txt123456789cmake_minimum_required(VERSION 3.8) project(CmakeHelloWorld)
  • linux | cmake的快速使用
    簡介  CMake(Cross platform make)是一個開源跨平臺的構建系統生成編譯工具,允許開發者編寫一種與平臺無關的CMakeList.txt
  • 分享一篇很不錯的CMake入門文章,值得收藏細讀!
    執行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的區別在於前者提供了一個交互式的界面)。其中, PATH 是 CMakeLists.txt 所在的目錄。本文將從實例入手,一步步講解 CMake 的常見用法,文中所有的實例代碼可以在這裡找到。
  • CMake環境搭建
    (VERSION 2.8)project(cmake_test)add_executable(${PROJECT_NAME} "main.cpp")1.CMake官網下載https://cmake.org/download/2. linux中安裝CMake環境編譯好的二進位文件安裝直接下載二進位文件直接執行sh解壓     tar -xvf xxxx.tar.gz.
  • 【CMake教程】(五)CMake 配置install打包
    本片教程我們將講述如何在cmake中配置install的打包路徑。下面我們將以mathlib庫和頭文件為例子進行配置。(2)CMake 的使用環境和安裝本教程的使用環境為:ubutu18.04 ltsgcc version 7.5.0g++ version 7.5.0cmake version 3.10.2安裝cmake:sudo apt install cmake(3)設置設置我們的程序輸出為lib文件
  • cmake終極奧義
    一、初識cmakecmake集中開源,跨平臺,能夠管理大型項目,簡化編譯構建過程和編譯過程,高效率,可擴展於一體,簡單而強大的項目構建工具二,安裝cmake一般不需要安裝,cmake目前已經成為各大Linux發行版提供的組件,所以,需要自己動手安裝的可能性很小。
  • CMake的安裝及簡單使用
    因此,對於大多數項目,應當考慮使用更自動化一些的 cmake或者autotools來生成makefile,而不是上來就動手編寫。總之,項目構建工具能夠幫我們在不同平臺上更好地組織和管理我們的代碼及其編譯過程,這是我們使用它的主要原因。cmake的主要特點cmake和autotools是不同的項目管理工具,有各自的特點和用戶群。
  • 【CMake教程】(三)CMake 配置指定C++11編譯的標準
    (2)CMake 的使用環境和安裝本教程的使用環境為:ubutu18.04 ltsgcc version 7.5.0g++ version 7.5.0cmake version 3.10.2安裝cmake:sudo apt install cmake(3)CMake指定C++標準  指定C+
  • AndroidNDK——Cmake詳解
    以CMake編寫的源文件以CmakeLists.txt命名或以.cmake為擴展名。可以通過add_subdirectory()命令把子目錄的CMake源文件添加進來。CMake源文件中所有有效的語句都是命令,可以是內置命令或自定義的函數/宏命令。
  • Cmake基礎知識講解
    CMake主要是編寫CMakeLists.txt文件,然後用cmake命令將CMakeLists.txt文件轉化為make所需要的makefile文件,最後用make命令編譯源碼生成可執行程序或共享庫(so(shared object))。
  • CMake基礎入門和使用
    2)執行命令「cmake PATH」或者「ccmake PATH」生成 Makefile ( PATH 是 CMakeLists.txt 所在的目錄 )。 3)使用 make 命令進行編譯。3.CMake具體使用實例  寫到這,一道閃光,自己沉睡的記憶被喚醒了,欣慰啊,想起自己在安裝opencv的時候用過CMake, 具體就以安裝opencv為例。
  • CMake實戰教程(二)
    外部構建第一個問題,在運行cmake .後會產生很多垃圾文件,那麼我們可以讓它在一個build目錄下去編譯,生成的垃圾文件放在這個目錄下就好了,不需要的時候直接清除即可。cmake PATH那麼很顯然,它可以是相對路徑而不是絕對路徑,畢竟點『.』  表示當前路徑, 點點『..』 表示上一級路徑,那麼我們可以新建一個build目錄,然後在build目錄下去運行:cmake ..
  • Ubuntu下安裝OpenCV(二): CMake編譯(上)
    ,cmake是CMake的命令語句,-D是cmake命令中的一個選項,它用於創建或更新CMake的緩存。更多有關-D和其他選項(如-C、-S等)的介紹可以在官方文檔中查找到(https://cmake.org/cmake/help/v3.21/manual/cmake.1.html)(2) CMAKE_BUILD_TYPE
  • LibreCAD的CMake構建
    jwwlib該庫的頭文件和源文件都混在一起存放於libraries\jwwlib\src目錄下,我們創建libraries\jwwlib\CMakeLists.txt,內容如下:cmake_minimum_required(VERSION 3.15)##設置target