ฉันค่อนข้างใหม่สำหรับ CMake และอ่านบทแนะนำเกี่ยวกับวิธีการใช้งานและเขียนสคริปต์ CMake ที่ซับซ้อน 50 บรรทัดเพื่อสร้างโปรแกรมสำหรับคอมไพเลอร์ 3 ตัว นี่อาจเป็นการสรุปความรู้ทั้งหมดของฉันใน CMake
ตอนนี้ปัญหาของฉันคือฉันมีซอร์สโค้ดซึ่งมีโฟลเดอร์ที่ฉันไม่ต้องการสัมผัส / ยุ่งกับเมื่อฉันสร้างโปรแกรม ฉันต้องการให้ CMake และmake
เอาท์พุตไฟล์และโฟลเดอร์ทั้งหมดเข้ามา../Compile/
ดังนั้นฉันจึงเปลี่ยนตัวแปรสองสามตัวในสคริปต์ CMake ของฉันสำหรับสิ่งนั้นและมันก็ใช้ได้ในบางครั้งเมื่อฉันทำสิ่งนี้บนแล็ปท็อปของฉัน:
Compile$ cmake ../src
Compile$ make
โดยที่ฉันมีผลลัพธ์ที่สะอาดในโฟลเดอร์ที่ฉันอยู่ตอนนี้ซึ่งเป็นสิ่งที่ฉันกำลังมองหา
ตอนนี้ฉันย้ายไปที่คอมพิวเตอร์เครื่องอื่นและคอมไพล์ CMake 2.8.11.2 ใหม่และฉันเกือบจะกลับไปที่สี่เหลี่ยมจัตุรัส! มันมักจะรวบรวมสิ่งนั้นไว้ในsrc
โฟลเดอร์ที่ฉันCMakeLists.txt
อยู่
ส่วนที่ฉันเลือกไดเร็กทอรีในสคริปต์ CMake ของฉันคือ:
set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/)
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir})
set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
set(CMAKE_BUILD_DIRECTORY ${dir})
set(CMAKE_BINARY_DIR ${dir})
SET(EXECUTABLE_OUTPUT_PATH ${dir})
SET(LIBRARY_OUTPUT_PATH ${dir}lib)
SET(CMAKE_CACHEFILE_DIR ${dir})
และตอนนี้มันมักจะลงท้ายด้วย:
-- Build files have been written to: /.../src
ฉันพลาดอะไรไปรึเปล่า?
CMAKE_BINARY_DIR
CMAKE_CACHEFILE_DIR
จะเกิดอะไรขึ้นถ้าคุณลบการset()
โทรเหล่านี้ออกทั้งหมดและทำcd Compile; rm -rf *; cmake ../src
อย่างไร