คำถามติดแท็ก cmake

CMake เป็นเครื่องกำเนิดระบบสร้างข้ามแพลตฟอร์ม มันสร้างไฟล์สำหรับระบบการสร้างเช่น makefiles ดั้งเดิม, นินจาสร้างและไฟล์โครงการสำหรับสภาพแวดล้อมการพัฒนาแบบบูรณาการหลาย

5
Debug vs Release ใน CMake
ในโครงการที่รวบรวม GCC ฉันจะเรียกใช้ CMake สำหรับแต่ละประเภทเป้าหมาย (debug / release) ได้อย่างไร ฉันจะระบุการดีบักและปล่อยแฟล็ก C / C ++ โดยใช้ CMake ได้อย่างไร ฉันจะแสดงให้เห็นได้อย่างไรว่าไฟล์ประมวลผลหลักจะถูกคอมไพล์ด้วยg++และหนึ่งไลบรารีซ้อนกันด้วยgcc?
436 c++  c  gcc  cmake 

21
ค้นหาคำสั่ง 'cmake clean' เพื่อล้างเอาต์พุต CMake
เช่นเดียวกับการmake cleanลบไฟล์ทั้งหมดที่ makefile ได้สร้างขึ้นมาฉันต้องการทำเช่นเดียวกันกับ CMake ทั้งหมดบ่อยเกินไปฉันพบว่าตนเองต้องผ่านไดเรกทอรีที่ลบไฟล์เช่นcmake_install.cmakeและCMakeCache.txtและCMakeFilesโฟลเดอร์ มีคำสั่งที่ต้องการcmake cleanลบไฟล์เหล่านี้โดยอัตโนมัติหรือไม่? โดยหลักการแล้วสิ่งนี้ควรเป็นไปตามโครงสร้างแบบเรียกซ้ำที่กำหนดไว้ในCMakeLists.txtไฟล์ไดเรกทอรีปัจจุบัน
419 cmake 

7
CMake ที่เทียบเท่ากับ 'configure --prefix = DIR && ทำการติดตั้งทั้งหมด' คืออะไร
cmake . && make all installที่ฉันทำ งานนี้ /usr/localแต่การติดตั้งไป ฉันต้องติดตั้งกับคำนำหน้าอื่น (ตัวอย่างเช่นถึง/usr) คืออะไรcmakeและmakeบรรทัดคำสั่งเพื่อติดตั้ง/usrแทน/usr/local?
386 cmake 

14
ฉันจะเปิดใช้งาน C ++ 11 ใน CMake ได้อย่างไร
เมื่อฉันพยายามเรียกใช้ makefile ที่สร้างโดย CMake เพื่อรวบรวมโปรแกรมของฉันฉันได้รับข้อผิดพลาดนั้น ไม่รองรับช่วงสำหรับลูปในโหมด C ++ 98 ฉันพยายามเพิ่มadd_definitions(-std=c++0x)ในของฉันCMakeLists.txtแต่มันก็ไม่ได้ช่วย ฉันลองสิ่งนี้ด้วย: if(CMAKE_COMPILER_IS_GNUCXX) add_definitions(-std=gnu++0x) endif() เมื่อฉันทำg++ --versionฉันจะได้รับ: g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1 ฉันได้ลองSET(CMAKE_CXX_FLAGS "-std=c++0x")แล้วซึ่งยังใช้งานไม่ได้ ฉันไม่เข้าใจวิธีการเปิดใช้งานคุณสมบัติ C ++ 11 โดยใช้ CMake
356 c++11  cmake 

2
ความแตกต่างระหว่างการใช้ Makefile และ CMake เพื่อคอมไพล์โค้ด
ฉันใช้รหัสใน C / C ++ และใช้ Makefile (GNU) เพื่อรวบรวมรหัส ฉันสามารถทำเช่นเดียวกันกับ CMake และรับ MakeFile อย่างไรก็ตามความแตกต่างระหว่างการใช้ Makefile และ CMake เพื่อรวบรวมรหัสคืออะไร?
288 c++  c  makefile  cmake 


5
การใช้ CMake กับ GNU Make: ฉันจะดูคำสั่งที่แน่นอนได้อย่างไร
ฉันใช้ CMake กับ GNU Make และต้องการดูคำสั่งทั้งหมดอย่างแน่นอน (ตัวอย่างเช่นวิธีการคอมไพเลอร์ถูกดำเนินการแฟล็กทั้งหมด ฯลฯ ) GNU สร้าง--debugขึ้นมา แต่ดูเหมือนว่าจะมีประโยชน์หรือไม่ CMake จัดเตรียมแฟล็กเพิ่มเติมใน Makefile ที่สร้างขึ้นเพื่อการดีบักหรือไม่
281 cmake  gnu-make 

9
สลับระหว่าง GCC และ Clang / LLVM โดยใช้ CMake
ฉันมีโครงการหลายโครงการที่สร้างโดยใช้ CMake และฉันต้องการที่จะสามารถสลับระหว่างการใช้ GCC หรือ Clang / LLVM เพื่อรวบรวมได้อย่างง่ายดาย ฉันเชื่อ (โปรดแก้ไขให้ฉันถ้าฉันเข้าใจผิด!) ที่จะใช้เสียงดังกราวฉันต้องตั้งค่าต่อไปนี้: SET (CMAKE_C_COMPILER "/usr/bin/clang") SET (CMAKE_C_FLAGS "-Wall -std=c99") SET (CMAKE_C_FLAGS_DEBUG "-g") SET (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG") SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") SET (CMAKE_CXX_COMPILER "/usr/bin/clang++") SET (CMAKE_CXX_FLAGS "-Wall") SET (CMAKE_CXX_FLAGS_DEBUG "-g") SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELEASE "-O4 …
269 cmake  llvm  clang 


5
วิธีเพิ่มไดเรกทอรีรวมอย่างถูกต้องด้วย CMake
เกี่ยวกับปีที่ผ่านมาผมถามเกี่ยวกับการอ้างอิงในส่วนหัว CMake ฉันเพิ่งรู้ว่าปัญหานี้ดูเหมือนว่า CMake จะพิจารณาว่าไฟล์ส่วนหัวเหล่านั้นเป็นไฟล์ภายนอกโครงการ อย่างน้อยเมื่อสร้างโครงการ Code :: Blocks ไฟล์ส่วนหัวจะไม่ปรากฏในโครงการ (ไฟล์ต้นฉบับทำ) สำหรับฉันแล้ว CMake คิดว่าส่วนหัวเหล่านั้นเป็นโครงการภายนอกและไม่ได้ติดตามพวกเขาในสิ่งที่ขึ้นกับ การค้นหาอย่างรวดเร็วในบทแนะนำ CMake ชี้ไปinclude_directoriesที่ดูเหมือนจะไม่ทำสิ่งที่ฉันต้องการ ... เป็นวิธีที่เหมาะสมในการส่งสัญญาณถึง CMake ว่าไดเรกทอรีใดมีส่วนหัวที่จะรวมและส่วนหัวเหล่านั้นควรถูกติดตามโดย Makefile ที่สร้างขึ้น?
243 c++  ubuntu  cmake 

3
CMake: พิมพ์ตัวแปรที่เข้าถึงได้ทั้งหมดในสคริปต์
ฉันสงสัยว่ามีวิธีพิมพ์ตัวแปรที่เข้าถึงได้ทั้งหมดใน CMake หรือไม่ ฉันไม่สนใจตัวแปร CMake - ใน--help-variablesตัวเลือก ฉันกำลังพูดถึงตัวแปรที่ฉันกำหนดไว้หรือตัวแปรที่กำหนดโดยสคริปต์ที่รวมไว้ ฉันกำลังรวมถึง: INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake) และฉันหวังว่าฉันจะสามารถพิมพ์ตัวแปรทั้งหมดที่อยู่ที่นี่แทนที่จะต้องผ่านไฟล์ทั้งหมดและอ่านสิ่งที่มีอยู่ - ฉันอาจพบว่าตัวแปรบางตัวที่ฉันไม่รู้เกี่ยวกับสิ่งนั้นอาจมีประโยชน์ มันจะเป็นการดีที่จะช่วยการเรียนรู้และการค้นพบ มันเป็นอย่างเคร่งครัดสำหรับการแก้จุดบกพร่อง / การพัฒนา นี่คล้ายกับคำถามในพิมพ์ตัวแปรท้องถิ่นทั้งหมดที่เข้าถึงขอบเขตปัจจุบันใน Luaได้ แต่สำหรับ CMake! มีใครทำเช่นนี้?
222 cmake 

5
ฉันจะเพิ่มตัวเชื่อมโยงหรือการตั้งค่าสถานะการคอมไพล์ในไฟล์ CMake ได้อย่างไร
ฉันใช้arm-linux-androideabi-g++คอมไพเลอร์ เมื่อฉันพยายามรวบรวม "Hello, World!" โปรแกรมมันคอมไพล์ดี เมื่อฉันทดสอบโดยการเพิ่มการจัดการข้อยกเว้นแบบง่ายในโค้ดนั้นมันก็ทำงานได้เช่นกัน (หลังจากเพิ่ม-fexceptions.. ฉันคิดว่ามันถูกปิดใช้งานโดยค่าเริ่มต้น) นี้สำหรับอุปกรณ์ Android, และฉันเพียงต้องการที่จะใช้ CMake ndk-buildไม่ ตัวอย่างเช่น - first.cpp #include <iostream> using namespace std; int main() { try { } catch (...) { } return 0; } ./arm-linux-androideadi-g++ -o first-test first.cpp -fexceptions มันทำงานได้โดยไม่มีปัญหา ... ปัญหา ... ฉันพยายามรวบรวมไฟล์ด้วยไฟล์ CMake ฉันต้องการที่จะเพิ่ม-fexceptionsเป็นธง ฉันลองด้วย set (CMAKE_EXE_LINKER_FLAGS -fexceptions …
220 c++  cmake 

3
cmake และ libpthread
ฉันกำลังใช้RHEL 5.1งานอยู่gccอยู่ ฉันcmakeจะบอกให้เพิ่ม-pthreadในการรวบรวมและการเชื่อมโยงได้อย่างไร
188 pthreads  cmake 

9
ฉันจะสร้างเอาต์พุต CMake ให้เป็น 'bin' dir ได้อย่างไร
ขณะนี้ฉันกำลังสร้างโครงการด้วยโครงสร้างปลั๊กอิน ฉันใช้ CMake เพื่อรวบรวมโครงการ ปลั๊กอินจะรวบรวมในไดเรกทอรีที่แยกต่างหาก ปัญหาของฉันคือ CMake รวบรวมและบันทึกไบนารีและปลั๊กอินไลบรารีแบบไดนามิกในโครงสร้างไดเรกทอรีของแหล่งที่มา ฉันจะทำให้ CMake บันทึกไฟล์ในบางสิ่งเช่นไดเรกทอรี. / bin ได้อย่างไร
187 c++  plugins  cmake 

3
ไวยากรณ์ของ CMake สำหรับการตั้งค่าและใช้ตัวแปรคืออะไร
ฉันขอสิ่งนี้เป็นเครื่องเตือนใจตัวเองในครั้งต่อไปที่ฉันใช้ CMake มันไม่ติดและผลลัพธ์ของ Google ก็ไม่ได้ยอดเยี่ยม ไวยากรณ์ในการตั้งค่าและใช้ตัวแปรใน CMake คืออะไร
168 cmake 

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