我有一個由兩個子專案組成的 cmake 專案,比如專案 1 和專案 2。專案 1 是一個可執行檔案,應該是 32 位的。專案 2 是一個庫 (MODULE),我需要它的 32 位和 64 位版本。我正在使用 Visual Studio 2022。現在,如果我選擇 64 位(通過 x 64 Release),恐怕 cmake 將為專案 1 構建 64 位可執行檔案。所以我想要一些 CMake 命令來確保專案 1 可以構建在 32位而已。就像是
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
##ABORT##
在專案 1 中。謝謝
uj5u.com熱心網友回復:
只需在 cmake 配置期間發出致命錯誤。
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 4)
message(FATAL_ERROR "Project 1 must not be build for 64 bit; choose a configuration using 32 bit")
endif()
通常你會希望在你的 CMake 檔案中避免這樣的邏輯。CMake 的最大好處之一是它通常只需要很少的努力就可以為不同的配置編譯專案的二進制檔案。CMakeLists.txt如果您的專案的某些部分僅適用于某些配置,那么為專案提供一個 main 以進行適當的選擇而不會在配置期間導致錯誤將是用戶友好的。
完成此操作的一個好方法是有條件地在 parent 中添加子目錄CMakeLists.txt。
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
add_subdirectory(project1)
else()
message("Not a 32 bit build; not adding Project 1")
endif()
add_subdirectory(project2)
即使使用這種方法,如果某些用戶以非預期的方式使用您的專案并使用專案 1 作為源目錄而不是您的主專案目錄,您也應該在子專案中保留帶有致命錯誤的代碼段以防止出現問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/451532.html
