CMake สร้างการกำหนดค่าสำหรับการกำหนดค่าโปรเจ็กต์ที่เป็นไปได้ทั้งหมดเสมอหรือไม่

ฉันมีการกำหนดค่าเฉพาะสำหรับตัวเลือกการแก้ไขข้อบกพร่องและการเปิดตัว (แตกต่างกันสำหรับ MSVC และ GCC) สมมติว่าเราสร้างโปรเจ็กต์เริ่มต้นผ่าน cmake .. CMake สร้างการกำหนดค่าสำหรับการกำหนดค่าโปรเจ็กต์ที่เป็นไปได้ทั้งหมดเสมอ (ดีบั๊กและรีลีส) หรือหนึ่งรายการจะได้รับตัวเลือกการกำหนดค่าเพียงชุดเดียวเสมอหรือไม่


person DuckQueen    schedule 29.06.2016    source แหล่งที่มา
comment
ฉันคิดว่ามันขึ้นอยู่กับเครื่องกำเนิดของคุณ แน่นอนว่ามันทำการกำหนดค่าทั้งหมดสำหรับ Visual Studio ฉันไม่แน่ใจเกี่ยวกับเครื่องปั่นไฟอื่นๆ   -  person cplusplusrat    schedule 29.06.2016


คำตอบ (1)


ตามที่ @cplusplusrat ได้แสดงความคิดเห็น สิ่งนี้ขึ้นอยู่กับสภาพแวดล้อมตัวสร้าง / บิลด์:

  • สำหรับสภาพแวดล้อมที่มีการกำหนดค่าหลายรายการ เช่น MSVC หรือ XCode ใช่
  • สำหรับสภาพแวดล้อมที่มีการกำหนดค่าเดียว เช่น GCC หมายเลข

และค่าเริ่มต้นสำหรับสภาพแวดล้อมที่มีการกำหนดค่าเดียวไม่ใช่ทั้ง Debug หรือ Release (ดู ที่นี่ หรือ ที่นี่)

ดังนั้นฉันจึงกำหนด CMAKE_BUILD_TYPE หนึ่งรายการสำหรับสภาพแวดล้อมที่มีการกำหนดค่าเดียวเป็น ค่าเริ่มต้น. คุณสามารถทำได้เช่น ในสคริปต์บิลด์ที่เรียก CMake:

mingw_build.cmd

@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: usage:
::          mingw_build.cmd <target> <config>
::                  <target> - target to be built (default: all)
::                  <config> - configuration to be used for build (default: Debug)

if NOT "%1" == "" (set CMAKE_TARGET=%1) else (set CMAKE_TARGET=all)
if NOT "%2" == "" (set CMAKE_BUILD_TYPE=%2) else (set CMAKE_BUILD_TYPE=Debug)
SET CMAKE_BINARY_DIR=%CMAKE_BUILD_TYPE%

IF NOT EXIST "%CMAKE_BINARY_DIR%\Makefile" (
    cmake -H"." -B"%CMAKE_BINARY_DIR%" -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% -G"MinGW Makefiles"
)
cmake --build %CMAKE_BINARY_DIR% --target %CMAKE_TARGET%

ENDLOCAL 

vs_x64_build.cmd

@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
:: usage:
::          vs_x64_build.cmd <target> <config>
::                  <target> - target to be built (default: ALL_BUILD)
::                  <config> - configuration to be used for build (default: Debug)

if NOT "%1" == "" (SET CMAKE_TARGET=%1) else (SET CMAKE_TARGET=ALL_BUILD)
if NOT "%2" == "" (set CMAKE_BUILD_TYPE=%2) else (set CMAKE_BUILD_TYPE=Debug)
SET CMAKE_BINARY_DIR=x64

IF NOT EXIST "%CMAKE_BINARY_DIR%\*.sln" (
    cmake -H"." -B"%CMAKE_BINARY_DIR%" -G"Visual Studio 14 2015 Win64"
)
cmake --build "%CMAKE_BINARY_DIR%" --target "%CMAKE_TARGET%" --config "%CMAKE_BUILD_TYPE%"

ENDLOCAL 
person Florian    schedule 29.06.2016