สร้างโปรแกรม C ที่รวมเข้ากับวินโดวส์, MacOS และลินุกซ์ต้องการมากกว่าโค้ดต้นฉบับแบบพกพา -- มันต้องการระบบสร้างที่ปรับตัวเข้ากับระบบย่อยของแต่ละแพลตฟอร์มของระบบย่อย CGF, ระบบสร้างระบบระบบระบบโอเพนซอร์ส, ให้คุณได้กําหนดโครงการของคุณอีกครั้งในแฟ้มปรับแต่งง่าย ๆ และสร้างแฟ้มปรับแต่งรูปแบบแฟ้มแบบปรับแต่งแฟ้มแบบกราฟิก (แฟ้ม, กราฟิก, โครงการ XCC, ฯลฯ) บทความนี้จะให้แนวทางการใช้งานอย่างรัดกุม เพื่อสร้างโครงการ CP ฟอร์มใหม่ โดยทําการสร้างทุกอย่างจากเทคนิคพื้นฐานเพื่อสร้างการปรับเปลี่ยนระบบ, การสร้างการปรับเปลี่ยนระบบ, การสร้างและสร้างการเชื่อมโยงแบบ Profile และการสร้างการถอดแบบ Retc.com.

C doc คืออะไร?

Cgf เป็นระบบสร้างข้อมูลกํากับ: มันไม่ได้รวมโค้ดโดยตรง แต่ได้สร้างแฟ้มนําเข้าสําหรับระบบการสร้างอื่น ๆ คุณอธิบายโครงการของคุณใน [FLT: 0] using languages (FLT: 0) โดยใช้ภาษาโดเมน CGG แล้วอ่านแฟ้มเหล่านี้ และส่งออกคําแนะนําการสร้างโครงงานสําหรับเป้าหมายที่เหมาะสม

คุณสมบัติสําคัญของ CGA รวม:

  • [FLT: 0]]. Platiform-agnostic clugraphy: แบบเดียวกัน ใช้กับ Unix, วินโดวส์, และ MacOS.
  • [FLT: 0] เครื่องกําเนิดไฟฟ้ามัลติเพล: รองรับการสร้าง, นินจา, สตูดิโอภาพ, Xcode, และอื่น ๆ.
  • [FLT: 0] สร้าง [FLT: ⁇ ภายนอก-ของแหล่งข่าว : รักษาการสร้างวัตถุต่าง ๆ แยกออกจากรหัสแหล่ง
  • [FLT: 0] ความสามารถ โมดูล, หน้าที่ของฟังก์ชัน และแมโครอนุญาตให้สร้างตรรกะได้อีกครั้ง
  • [FLT: 0]. ค้นพบ: พบไลบรารีและส่วนหัวที่ติดตั้งไว้แล้ว.
  • [FLT: 0] การแทรกแซงด้วย CI/CD : ทํางานอย่างไม่เปิดเผยตัวในท่อส่งอัตโนมัติ

CGuff ได้กลายเป็นมาตรฐานของการพัฒนาการข้ามแพลตฟอร์มในระบบนิเวศ C และ C++ ซึ่งใช้โดยโครงการที่มีความหลากหลายเป็น LLVM, MySQL และสภาพแวดล้อมของพื้นที่ทํางาน KDE ทั้งหมด

ประโยชน์ จาก การ ใช้ C สําหรับ การ พัฒนา แบบ ครอส-พลาธิปกรณ์ C

การรับเลี้ยงลูกด้วย C Gaff ทําให้เกิดประโยชน์ที่เป็นรูปธรรมหลายอย่างเกินความจุง่าย:

  • [FLT: 0]. แหล่งที่มาของความจริง: เขียนสร้างตรรกะครั้งเดียวและสร้างไฟล์สําหรับทุกแพลตฟอร์ม กําจัดตัวเขียนเปลือกที่เปราะบางหรือแพลตฟอร์ม-มาตรฐาน เมคไฟล์ (FLT: 1).
  • [FLT: 0] การรวมกลุ่ม: ทีมสามารถทํางานในสตูดิโอวิทัศน์, CLion, Xcode หรือ VS โค๊ด ในขณะที่ใช้ร่วมกัน .
  • [FLT: 0] โครงงานโครงการโมเดลารี่: ใช้ เพื่อแยกโครงการขนาดใหญ่ออกเป็นส่วนประกอบที่ตัดต่อเข้ากับความอิ่มตัวของตนเอง
  • [FLT: 0] ตรรกะเชิงอนุมาน: นําธงแบบมาตรฐานแพลตฟอร์ม, ไฟล์แหล่ง, หรือไลบรารีเฉพาะเมื่อจําเป็น โดยไม่ต้องจําลองการปรับแต่งทั้งหมด
  • [FLT: 0] การจัดการการติดต่อแบบอัตโนมัติ : และ ง่ายขึ้นโดยใช้ห้องสมุดส่วนที่สาม (FLT:6).
  • [FLT: 0] การจับและบรรจุกล่อง: CTE และ CPacks รวมกันแน่น ทําให้เป็นเรื่องเล็กน้อยที่จะเพิ่มการทดสอบและสร้างเครื่องติดตั้ง
  • [FLT: 0] ก่อสร้างผลงาน: เครื่องกําเนิดนินจารวมกับ CCache ลดเวลาสร้างช่วงเวลาอย่างน่าประหลาด
  • [FLT: 0] ชุมชนปฏิบัติการ: อย่างละเอียด เอกสารเชิงปฏิบัติ และระบบนิเวศที่เจริญรุ่งเรืองของโมดูลและบทบรรยาย (FLT:3).

เริ่ม: ตั้ง CGA สําหรับโครงการ C

ส่วนนี้เดินผ่านการทํางานที่สมบูรณ์ จากการติดตั้งเป็นโปรแกรมประมวลผลที่รวบรวมบนสามแพลตฟอร์มหลัก

1. ติดตั้ง CGuild

ดาวน์โหลดไบนารีล่าสุดจาก [FLT: 0]. cffake.org[[FLT: 1) หรือใช้ตัวจัดการแพกเกจของระบบของคุณ:

  • [FLT: 0] Linux (Debian/UBuntu) [[FLT: 7]
  • [FLT: 0]. MACAS (Hombraw): [FLT: 8]
  • [FLT: 0] Windows: ประมวลผลตัวติดตั้ง และทําให้แน่ใจว่า "Add C dod to the Passage ของระบบ" ถูกเลือก

ตรวจสอบการติดตั้งด้วย [FLT: 9]. รุ่น 3.10 หรือสูงกว่านั้นขอแนะนําให้แสดงคุณสมบัติที่พิจารณาที่นี่

2. เขียน CGodList.txt ต่ําสุด

สร้างแฟ้มชื่อ [FLT: 10] ในรากโครงการของคุณด้านล่างนี้เป็นตัวอย่างน้อยที่สุดสําหรับโครงการ C One-source:

cmake_minimum_required(VERSION 3.10)
project(HelloWorld C)

add_executable(hello main.c)

เซ็กเมนต์:

  • [FLT: 12] กําหนดรุ่น CGudge น้อยที่สุด นอกจากนี้ยังทําให้นโยบายปรับปรุงปรับปรุงพฤติกรรมได้
  • [FLT: 13] กําหนดชื่อโครงการและภาษา กําหนด [FLT: 14] ป้องกัน CGG จากการตรวจสอบสําหรับ C+ ผู้เขียนภาพ.
  • [FLT: 15] บอกซีเกว่าเป้าหมาย ควรถูกสร้างจาก .

ตัวอย่างที่สมจริงมากขึ้นเล็กน้อย เพิ่มธงคอมโพสิตและการเชื่อมโยงเฉพาะหัวเท่านั้น:

cmake_minimum_required(VERSION 3.15)
project(Calculator C)

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)

add_executable(calc main.c parser.c)
target_include_directories(calc PRIVATE include)

ที่นี่ เพิ่ม ไปยังเส้นทางค้นหาหัวของผู้รวบรวมเฉพาะเป้าหมาย .

3. สร้างแฟ้มสร้าง

สร้างไดเรกทอรีการสร้างและประมวลผล CGA:

mkdir build
cd build
cmake ..

บน Linux/ MacOS นี้จะทําการสร้างแฟ้มสร้าง Gakefile โดยปริยาย โดยบนวินโดวส์ที่มีการติดตั้งสตูดิโอแบบกราฟิกไว้ มันจะสร้างแฟ้ม [FLT: 23] ขึ้นมา เพื่อร้องขอตัวสร้างอื่น ให้ใช้ [FLT: 24]

หลังจากยุคสมัยแล้ว คุณสามารถส่งต่อตัวเลือกที่เวลาปรับแต่ง:

cmake .. -DCMAKE_BUILD_TYPE=Release -DMY_FEATURE=ON

ตัวแปรเหล่านี้ถูกเก็บไว้ใน และใช้ซ้ําเมื่อทํางานในภายหลัง

4. สร้างโครงการ

เมื่อสร้างแฟ้มแล้ว ให้รวมเข้ากับแฟ้มต่าง ๆ:

  • [FLT: 0] Got/Ninja: [[FLT: 27] (งานบนแพลตฟอร์มและเครื่องกําเนิดไฟฟ้า)
  • [FLT: 0] VISAAAY Studio:
  • [FLT: 0]. Xcode:

[FLT: 30] คําสั่งเป็นครอสแพลตฟอร์ม และหลีกเลี่ยงการดํารงตําแหน่งการวิงวอนในชานชาลา ใช้ เพื่อเพิ่มความเร็ว

ขั้นสูง CGE THNICE สําหรับโครงการเรียล-เวิลด์

นอก จาก พื้น ฐาน แล้ว Cg ยัง ให้ ลักษณะ เด่น ที่ สาย น้ํา จะ มี ขนาด ใหญ่ กว่า หรือ ซับ ซ้อน กว่า นั้น อีก.

การจัดการความขึ้นกับเงื่อนไขในการค้นหา

คําสั่ง สืบค้นที่ไลบรารีที่ถูกติดตั้งไว้แล้ว และตั้งค่าตัวแปรสําหรับพาธและแฟ้มไลบรารีของพวกเขา การปรับปรุง KFTA ส่งเสริมการใช้ [FLT: 0] เป้าหมายที่นําเข้า [FLT: 1) สําหรับการติดต่อแบบสะอาด:

find_package(SDL2 REQUIRED)
target_link_libraries(my_app PRIVATE SDL2::SDL2)

การนําเข้าเป้าหมายโดยอัตโนมัติ รวมถึงไดเรกทอรี, การรวมเครื่องหมาย attachments และที่อยู่เชื่อมโยง หากไลบรารีนี้ไม่มีแฟ้มปรับแต่ง C ซึ่งคุณอาจต้องการโมดูลสําหรับค้นหา โปรดเขียนแฟ้มของคุณเอง หรือพึ่งพาโปรแกรมของกลุ่มงาน [FLT: 0] ตัวพัฒนาแบบ Feb- Spec ([FLT: 1).

สําหรับความขึ้นต่อกันโดยไม่มีการติดตั้งแบบเต็มระบบ ดาวน์โหลดและรวมโค้ดแหล่งที่มาที่เวลาปรับแต่ง:

include(FetchContent)
FetchContent_Declare(
 zlib
 GIT_REPOSITORY https://github.com/madler/zlib.git
 GIT_TAG v1.3
)
FetchContent_MakeAvailable(zlib)
target_link_libraries(my_app PRIVATE zlib)

วิธี นี้ ทํา ให้ แน่ ใจ ว่า จะ สามารถ ทํา ให้ เกิด การ เปลี่ยน แปลง ได้ โดย การ แปล ฉบับ แปล บาง ๆ.

เพิ่มการทดสอบด้วย CTest

C doctrument texting test test. เปิดใช้งานและกําหนดการทดสอบใน ของคุณ:

enable_testing()

add_executable(test_parser test_parser.c)
target_link_libraries(test_parser PRIVATE parser_lib)

add_test(NAME ParserTest COMMAND test_parser)

ทําการทดสอบด้วย:

ctest --output-on-failure

CTest รองรับการทดสอบแก้ไข, ฉลาก, เวลานอก และการทดสอบแบบขนาน ดูเพิ่มที่การทดสอบ ดูเพิ่มที่ผนวกเข้ากับเฟรมแบบ [FLT: 0] cmocka[FLT: 1) โดยลิงก์ของห้องสมุด และใช้.

การค่อย ๆ ลดเสียง/ เพิ่มเสียง/ เพิ่มเสียง

C doc do plishing cross-completion [FLT: 0] file. ไฟล์เครื่องมือตั้งค่าตัวรวบรวม, sysruth, และสถาปัตยกรรมเป้าหมาย. สร้างแฟ้มแบบ [FLT: 40]:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_SYSROOT /path/to/sysroot)

แล้วเรียก C Guide ด้วยเครื่องเครื่องมือ:

cmake -DCMAKE_TOOLCHAIN_FILE=arm-cross.cmake ..

CGa จะใช้คอมโพลีเซอร์ที่ระบุไว้โดยอัตโนมัติ และค้นหา sysources สําหรับไลบรารี เทคนิคนี้ใช้ได้กับระบบที่ฝังตัว, ระบบมือถือ, และสถานการณ์ใด ๆ ที่เครื่องจักรสร้างแตกต่างจากเครื่องเป้าหมาย เรเฟอร์ไปยังงาน [FLT: 0] Cros Completed with CGG[FT: 1) ไกด์สําหรับรายละเอียด

กําลังติดตั้งและแพ็คเกจ

ใช้[FLT: 43] คําสั่งเพื่อนิยามโครงการของคุณที่ควรจะดําเนินการ:

install(TARGETS my_app DESTINATION bin)
install(FILES config.ini DESTINATION etc)

CPack จากนั้นสร้างเครื่องติดตั้ง: DEB, RPM, NMPL, DMG ฯลฯ. เพิ่มเมื่อสิ้นสุด ของคุณ:

include(CPack)

เรียกใช้ [FLT: 47] เพื่อผลิตแพกเกจ Debian CPack รับกฏการติดตั้งทั้งหมดเป็นมรดก และอนุญาตให้ปรับแต่งเองผ่านทางตัวแปร เช่น .

การ ตก หลุม พราง และ การ ปฏิบัติ ที่ ดี ที่ สุด

นี่ เป็น ประเด็น บ่อย ๆ และ หลีก เลี่ยง ปัญหา ดัง นี้:

หลุม ดํา: ทาง ที่ บิด เบี้ยว

ไม่ใช้พาธสัมบูรณ์ใน . ใช้[FLT: 50]] และ) สัมพันธ์กับต้นุ สําหรับตําแหน่งแฟ้มเวลาทํางาน ให้ใช้[FLT: 52) เพื่อฝังเส้นทางหรือพึ่งพาไดเรกทอรีการติดตั้ง

หลุม ดํา: ไม่ ใส่ ใจ กับ การ ใช้ ไฟฟ้า

นิพจน์ของตัวเร่ง () คํานวณเวลาการสร้าง ไม่ปรับแต่งค่าเวลา สําคัญมากสําหรับการตั้งค่าต่อกําหนด:

target_compile_definitions(my_app PRIVATE
 $<$<CONFIG:Debug>:_DEBUG>
)

นี้เพิ่ม [FLT: 55] เพียงสําหรับการดีบั๊ สร้าง เพราะเครื่องกําเนิดไฟฟ้าหลายเครื่อง (VAAL Biography, Xcode) ไม่ได้ตั้งค่า ตามเวลาปรับแต่ง (อังกฤษ: FIFT: 57).

หลุม พราง: ใช้ คํา สั่ง ทั่ว โลก มาก เกิน ไป

คําสั่งเช่น ]] ] และ ส่งผลต่อเป้าหมายทั้งหมด preffer-factentententententer enter (FLT:61), [FLTT:62) และ[FTTT:63] สําหรับการตั้งเป้าที่ดี

หลุม พราง: ไม่ใช้สโคปที่เหมาะสมสําหรับค้นหา

ตั้งค่า ขอบเขตที่เหมาะสม โดยมี Cgook ปัจจุบันแทน [FLT: 65] จากนั้นเชื่อมเป้าหมายของมัน แล้วอย่าใช้ และการตั้งค่าการเชื่อมโยงด้วยตนเอง ยกเว้นว่าจําเป็นอย่างยิ่ง

รูปแบบการวน

Ctrade การแปลงความท้าทายของการพัฒนาหลายพัทธ์เป็นกระบวนการที่ควบคุมได้ และซ้ําได้ โดยการเขียนชุดของคําสั่งการสร้าง คุณจะได้รับการจัดการแบบเฉพาะ, การรองรับ, การจัดการการย่อยข้อมูล, และความมั่นคงในระบบปฏิบัติการหลักทั้งหมด เริ่มต้นด้วย [FLT: 67] และค่อยๆ รับคุณสมบัติที่ก้าวหน้า -- การลองมาลองใหม่, การข้ามแนวตาราง, การจัดวาง, การจัดวาง, การจัดวาง, การเรียนของคุณเติบโต, การลงทุนใน C จ่ายเงินให้คุณทุกครั้ง, การสร้าง, หรือการทดสอบบนแพลตฟอร์มอื่น ๆ โดยไม่ต้องสร้างบรรทัดเดียว