在專案根目錄下建立檔案 CMakeLists.txt 並編輯:
# 專案名稱
project(Test)
# 添加可執行檔與需要編譯的翻譯單元
add_executable(Test main.cpp test.cpp ...) 終端執行命令:
cmake . -B ./build
# . 表示 CMakeLists.txt 所在的根目錄(目前目錄)
# -B 指定用於構建的資料夾cmake --build ./build # 在資料夾./build中構建這就完成了一個最小的Demo。
使用Package:
# 指定 Package 的查找路徑
set(CMAKE_PREFIX_PATH "/to/path")
#查找包OpenSSL,並設爲必須
find_package(OpenSSL REQUIRED)
# 鏈接程式庫
target_link_libraries(Test PUBLIC OpenSSL::SSL OpenSSL::Crypto)設定C++標準:
target_compile_features(Test PUBLIC cxx_std_20) # C++20添加include目錄:
target_include_directories(Test PUBLIC "/to/path")變數與列表:
# 設定變數
set(SRCFILES main.cpp test.cpp)
# 動態添加路徑
list(APPEND SRCFILES additional_file.cpp)
# 使用變數
add_executable(Test ${SRCFILES})
...常用變數:
${CMAKE_SOURCE_DIR} # CMakeLists.txt 所在目錄
${CMAKE_BINARY_DIR} # 構建目錄常見FAQ
設定了查找路徑卻查找不到包?
- 如果發生該問題,可以嘗試同時設定
包名稱(或加_DIR)變數與CMAKE_PREFIX_PATH路徑查找。
如:查找Qt路徑
set(CMAKE_PREFIX_PATH "/to/path/Qt6:/to/path") set(Qt6 "/to/path/Qt6") #列如下面查找Qt6,則設定變數名爲Qt6的路徑指向 # or set(Qt6_DIR "/to/path/Qt6") find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)除此之外,你應當設定查找路徑爲包的程式庫安裝路徑,而不是包本身的根路徑。如:
# 範例vcpkg # 你應該指向程式庫的安裝路徑 (installed/arm64-macos/) ,而不是包本身 (/to/path/vcpkg) set(CMAKE_PREFIX_PATH "/to/path/vcpkg/installed/arm64-macos/")- 如果發生該問題,可以嘗試同時設定
需要注意,cmake會緩存build目錄,在某些情況下緩存可能會導致問題。你可以嘗試刪除目錄或CMakeCache.txt後重新配置或者使用以下命令清除緩存:
cmake . -B ./build -U '*'
你好呀~ 看到留言訊息裏的 ⌈O2⌋可能是拼寫錯誤,故維持了原始網域並更新了頭像路徑 如有誤可再留言變更~
您好,麻烦更新一下我的站点信息,谢谢~ Name: Ethan Desc: Don’t stay awake for too long. Link: https://hanlifeO2.com Avatar: https://hanlifeO2.com/avatar.svg
嗨~ 朋友你好呀,已經加上咯~