มีวิธีการกำหนดค่า CLion ให้ใช้ localfile เพื่อรวบรวมรหัสแทนที่จะเป็น CMake หรือไม่? ฉันไม่สามารถหาวิธีที่จะทำได้จากตัวเลือกการสร้าง
มีวิธีการกำหนดค่า CLion ให้ใช้ localfile เพื่อรวบรวมรหัสแทนที่จะเป็น CMake หรือไม่? ฉันไม่สามารถหาวิธีที่จะทำได้จากตัวเลือกการสร้าง
คำตอบ:
อัปเดต:หากคุณใช้ CLion 2020.2 แสดงว่ารองรับไฟล์ Makefiles แล้ว หากคุณใช้เวอร์ชั่นที่เก่ากว่าอ่านต่อ
แม้ว่าปัจจุบันรองรับเฉพาะ CMake เท่านั้นคุณสามารถสั่งให้ CMake โทรmake
ด้วยกำหนดเองของคุณMakefile
ได้ แก้ไขCMakeLists.txt
การเพิ่มหนึ่งในสองคำสั่งเหล่านี้:
เมื่อคุณบอกCLion
ให้รันโปรแกรมของคุณมันจะพยายามค้นหาไฟล์ที่รันได้ด้วยชื่อเดียวกันของเป้าหมายในไดเรกทอรีที่ชี้PROJECT_BINARY_DIR
ไป ดังนั้นตราบใดที่คุณmake
สร้างไฟล์ตามที่CLion
คาดหวังก็จะไม่มีปัญหา
นี่คือตัวอย่างการทำงาน:
CLion
ให้ส่ง $ (PROJECT_BINARY_DIR) ไปที่make
นี่คือตัวอย่างCMakeLists.txt
:
cmake_minimum_required(VERSION 2.8.4)
project(mytest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_custom_target(mytest COMMAND make -C ${mytest_SOURCE_DIR}
CLION_EXE_DIR=${PROJECT_BINARY_DIR})
CLion's
ไดเร็กทอรีนี่คือตัวอย่างMakefile
:
all:
echo Compiling $(CLION_EXE_DIR)/$@ ...
g++ mytest.cpp -o $(CLION_EXE_DIR)/mytest
นั่นคือทั้งหมดที่คุณอาจต้องการที่จะเปลี่ยนไดเรกทอรีการทำงานของโปรแกรมของคุณเพื่อที่จะดำเนินการเช่นเดียวกับเมื่อคุณเรียกใช้ทำจากภายในไดเรกทอรีของคุณ สำหรับการแก้ไขนี้:Run -> Edit Configurations ... -> mytest -> Working directory
Makefile
และCMakeLists.txt
ลองแก้ไข*.cpp
ไฟล์ นี่จะทำให้ CLion สร้างทุกอย่างตั้งแต่เริ่มต้น
แม้ว่านี่จะเป็นหนึ่งในคำขอคุณลักษณะที่ได้รับการโหวตมากที่สุดแต่Victor Kroppมีปลั๊กอินหนึ่งรายการที่พร้อมรองรับการสร้างไฟล์ makefiles:
ปลั๊กอินสนับสนุน Makefile สำหรับ IntelliJ IDEA
คุณสามารถติดตั้งได้โดยตรงจากที่เก็บอย่างเป็นทางการ:
การตั้งค่า> ปลั๊กอิน> ค้นหาmakefile
> ค้นหาในที่เก็บ> ติดตั้ง> รีสตาร์ท
มีวิธีการเรียกใช้อย่างน้อยสามวิธี:
จะเปิดบานหน้าต่างชื่อRun เป้าหมายด้วยการส่งออก
binary
บน <default>"
เวอร์ชั่นใหม่ล่าสุดมีการรองรับที่ดีกว่าสำหรับ Makefiles ที่สร้างขึ้นผ่านทางคอมไพล์
สามขั้นตอน:
ติดตั้ง compiledb
pip install compiledb
เรียกใช้ให้แห้ง
compiledb -n make
(ทำ autogen กำหนดค่าหากจำเป็น)
จะมีไฟล์ compile_commands.json ที่สร้างขึ้นเปิดโครงการและคุณจะเห็น CLion จะโหลดข้อมูลจากไฟล์ json หาก CLion ของคุณยังคงพยายามค้นหา CMakeLists.txt และไม่สามารถอ่าน compile_commands.json ให้ลองลบโฟลเดอร์ทั้งหมดดาวน์โหลดไฟล์ต้นฉบับอีกครั้งและทำซ้ำขั้นตอนที่ 1,2,3
โพสต์ดั้งเดิม : การทำงานกับ Makefiles ใน CLion โดยใช้ Compilation DB
ในการหลีกเลี่ยงการใช้ CMAKE ทั้งหมดคุณสามารถ:
สร้างโครงการของคุณตามปกติด้วย Make ผ่านเทอร์มินัล
เปลี่ยนการกำหนดค่า CLion ของคุณไปที่ (ในแถบด้านบน):
Run -> Edit Configurations -> yourProjectFolder
เปลี่ยนเป็นExecutable
สิ่งที่สร้างด้วย Make
เปลี่ยนเป็นWorking directory
โฟลเดอร์ที่เก็บไฟล์เรียกทำงานของคุณ (ถ้าจำเป็น)
ลบBuild
งานในBefore launch:Activate tool window
กล่อง
และคุณพร้อมแล้ว! ตอนนี้คุณสามารถใช้ปุ่มดีบั๊กหลังจากสร้างคู่มือของคุณแล้ว
ขณะนี้ CLion รองรับ CMake เท่านั้น ระบบการสร้างอื่น ๆ จะถูกเพิ่มในอนาคต แต่ปัจจุบันคุณสามารถใช้ CMake ได้เท่านั้น
มีการนำเครื่องมือนำเข้ามาใช้เพื่อช่วยให้คุณใช้ CMake
แก้ไข:
ที่มา: http://blog.jetbrains.com/clion/2014/09/clion-answers-frequently-asked-questions/
ฉันไม่คุ้นเคยกับ CMake มากและไม่สามารถใช้โซลูชันของ Mondkin ได้โดยตรง
นี่คือสิ่งที่ฉันคิดใน CMakeLists.txt โดยใช้ CLion (1.2.4) รุ่นล่าสุดและ MinGW บน Windows (ฉันเดาว่าคุณจะต้องแทนที่ทั้งหมด: g ++ mytest.cpp -o bin / mytest โดยทำตาม คุณไม่ได้ใช้การตั้งค่าเดียวกัน):
cmake_minimum_required(VERSION 3.3)
project(mytest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_custom_target(mytest ALL COMMAND mingw32-make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
และ Makefile แบบกำหนดเองก็เป็นเช่นนี้ (อยู่ที่รูทของโปรเจ็กต์ของฉันและสร้างไฟล์เรียกทำงานในไดเร็กทอรี bin):
all:
g++ mytest.cpp -o bin/mytest
ฉันสามารถสร้างแฟ้มที่ปฏิบัติการได้และข้อผิดพลาดในหน้าต่างบันทึกนั้นสามารถคลิกได้
คำแนะนำใน IDE ค่อนข้าง จำกัด ซึ่งเป็นข้อ จำกัด ที่ยิ่งใหญ่เมื่อเทียบกับโครงการ CMake ล้วนๆ ...
set(SOURCE_FILES all_files_here.c)
แล้วเพิ่มadd_executable(foobar_cmake ${SOURCE_FILES})
เข้าไปนอกเหนือจากเป้าหมายที่กำหนดเอง จากนั้นตรวจสอบให้แน่ใจว่า CLion ได้รับการตั้งค่าให้สร้าง / เรียกใช้เป้าหมายที่กำหนดเองและไม่ใช่ _cmake