ฉันจะใช้ CMake ได้อย่างไร?


102

ฉันพยายามใช้ CMake เพื่อรวบรวม opencv

ฉันกำลังอ่านบทช่วยสอนแต่ไม่เข้าใจว่าไฟล์ CMakeLists คืออะไรและเชื่อมต่อกับ gui ของ CMake ได้อย่างไร

ยังไม่เข้าใจว่า makefiles คืออะไร CMakeLists เหมือนกันหรือไม่

แล้วไฟล์ไหนที่ฉันเปิดท้ายด้วย visual-studio?


หากคำถามเกี่ยวข้องกับ Windows ควรกล่าวถึงคำถามนั้น (อาจมีwindowsแท็ก)
Basile Starynkevitch

เกี่ยวกับ CMake 3.13.3, แพลตฟอร์ม Windows และ IDE Visual Studio 2017 ฉันขอแนะนำ: wikihow.com/Use-CMake Regards
George Theodosiou

คำตอบ:


30

CMake รับไฟล์ CMakeList และส่งออกไปยังรูปแบบการสร้างเฉพาะแพลตฟอร์มเช่น Makefile, Visual Studio เป็นต้น

คุณเรียกใช้ CMake บน CMakeList ก่อน หากคุณใช้ Visual Studio คุณสามารถโหลดโครงการ / โซลูชันเอาต์พุตได้


2
Makefile คืออะไร? ฉันจะหาไฟล์โครงการ / โซลูชันสำหรับ visualstudio ได้ที่ไหน
lital maatuk

3
หลังจากที่คุณเรียกใช้ cmake (หรือ CMakeSetup และกดสร้าง) คุณควรจะพบ Makefile (ถ้า unix) หรือไฟล์โครงการที่ไหนสักแห่งในแผนผังโครงการ สามารถระบุตำแหน่งได้ใน CMakeList นี่เป็นการนำเสนอสั้น ๆ ที่ฉันพบในวิกิ CMake ที่คุณอาจพบว่ามีประโยชน์: elpauer.org/stuff/learning_cmake.pdf
holtavolt

2
CMake กำหนดค่าโครงการทั้งหมดโดยใช้รูปแบบการสร้างที่คุณเลือกซึ่งหมายความว่าจะตั้งค่าทุกอย่างเพื่อให้คุณสามารถใช้ตัวอย่างเช่น Visual Studio เพื่อรวบรวม โดยค่าเริ่มต้น (อย่างน้อยบน linux) จะสร้างโครงการที่ใช้ Make แทน Make ใช้ในการสร้างโครงการไม่ใช่กำหนดค่าหรือตั้งค่า ก่อนอื่นคุณต้องใช้ CMake เพื่อตั้งค่าโครงการจากนั้นเรียกใช้ Make เพื่อรวบรวมและสร้างสิ่งต่างๆ
leinaD_natipaC

156

ฉันไม่รู้เกี่ยวกับ Windows (ไม่เคยใช้มาก่อน) แต่ในระบบ Linux คุณต้องสร้างไดเร็กทอรี build (ในไดเร็กทอรีต้นทางด้านบน)

mkdir build-dir

เข้าไปข้างใน

cd build-dir

จากนั้นเรียกใช้cmakeและชี้ไปที่ไดเร็กทอรีหลัก

cmake ..

และในที่สุดก็เรียกใช้ make

make

สังเกตว่าmakeและcmakeเป็นโปรแกรมที่แตกต่างกัน cmakeเป็นMakefileเครื่องกำเนิดไฟฟ้าและmakeยูทิลิตี้ถูกควบคุมโดยMakefileไฟล์ข้อความ ดู cmakeและสร้างหน้าวิกิพีเดีย

หมายเหตุ: ใน Windows cmakeอาจใช้งานได้จึงจำเป็นต้องใช้แตกต่างกัน คุณจะต้องอ่านเอกสารประกอบ (เช่นเดียวกับที่ฉันทำกับ Linux)


cmake กับ make ต่างกันอย่างไร? โปรแกรมต่างกันไหม
lital maatuk

4
คำตอบที่ดี; ฉันไม่สามารถหาวิธีรับไฟล์บิลด์ในไดเร็กทอรีย่อยได้ ฉันไม่เข้าใจว่าทำไมเอกสารอย่างเป็นทางการถึงไม่พูดถึงเรื่องนี้
TheBigB

สิ่งนี้ทำงานภายใต้ Linux แต่บน Windows จะหยุดการตรวจจับคอมไพเลอร์ C / C ++ มีความคิดอย่างไรที่จะทำ?
bartlomiej.n

มันขึ้นอยู่กับวิธีการที่คุณโดยเฉพาะคอมพิวเตอร์ที่มีการตั้งค่า ตรวจสอบว่าPATHตัวแปรของคุณถูกต้อง BTW ฉันไม่เคยใช้ Windows เลยในชีวิต (และเขียนโปรแกรมครั้งแรกในปี 2517)
Basile Starynkevitch

2
การโหวตจำนวนมากและคำตอบไม่ได้บอกอะไรเกี่ยวกับ Visual Studio
Abyx

10

ใช่cmakeและmakeเป็นโปรแกรมที่แตกต่างกัน cmakeคือ (บน Linux) ตัวสร้างMakefile (และMakefile -s เป็นไฟล์ที่ขับเคลื่อนmakeยูทิลิตี้) มีเครื่องกำเนิดMakefileอื่น ๆ(โดยเฉพาะการกำหนดค่าและ autoconf เป็นต้น ... ) และคุณสามารถค้นหาโปรแกรมสร้างอัตโนมัติอื่น ๆ(เช่นนินจา )


ฉันคิดว่าเรื่องนี้ค่อนข้างสับสน cmake เป็นตัวสร้างระบบบิลด์และสิ่งหนึ่งที่สามารถสร้างได้คือ makefiles (เช่นในgnu.org/software/make ) แม้ว่าจะมีระบบอื่น ๆ อีกมากมายที่สามารถสร้างได้และไม่ใช่ระบบ "Makefile generators" ใน macos (และอาจจะเป็นทุกที่) ถ้าคุณเรียกใช้ cmake --help มันจะให้รายชื่อเครื่องกำเนิดไฟฟ้าที่มีอยู่มากมาย ตัวอย่างเช่น cmake สามารถสร้างโครงการ Xcode ได้โดยไม่ต้องทำอะไรกับ make
James Moore

0

เกี่ยวกับ CMake 3.13.3, แพลตฟอร์ม Windows และ IDE Visual Studio 2017 ฉันขอแนะนำคู่มือนี้ โดยย่อฉันขอแนะนำ:
1. ดาวน์โหลด cmake> เปิดเครื่องรูดมัน> ดำเนินการ
2. เป็นตัวอย่างดาวน์โหลด GLFW> เครื่องรูดมัน> สร้างโฟลเดอร์ภายในรูปร่าง
3. ใน cmake เรียกดู "Source"> เรียกดู "Build"> กำหนดค่าและสร้าง
4. ใน Visual Studio 2017 สร้างโซลูชันของคุณ
5. รับไบนารี
ความนับถือ.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.