การสร้างไดเรกทอรีใน CMake


143

ใน CMake ฉันต้องการสร้างไดเรกทอรีหากยังไม่มีอยู่ ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


250

คุณต้องการสร้างไดเรกทอรีเมื่อใด

ที่สร้างระบบการสร้าง

เพื่อสร้างไดเรกทอรีเมื่อ CMake สร้างระบบสร้าง

file(MAKE_DIRECTORY ${directory})

ที่สร้างเวลา

ในadd_custom_command()คำสั่ง (ซึ่งเพิ่มกฎการสร้างที่กำหนดเองไปยังระบบการสร้างที่สร้างขึ้น) และadd_custom_target()คำสั่ง (ซึ่งเพิ่มเป้าหมายที่ไม่มีเอาต์พุตดังนั้นมันจะถูกสร้างขึ้นเสมอ) คุณจะต้องระบุคำสั่งเพื่อดำเนินการในเวลาบิลด์ ${CMAKE_COMMAND} -E make_directoryสร้างไดเรกทอรีโดยการดำเนินการคำสั่ง ตัวอย่างเช่น:

add_custom_target(build-time-make-directory ALL
    COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

เวลาติดตั้ง

เพื่อสร้างไดเรกทอรีในเวลาติดตั้ง

install(DIRECTORY DESTINATION ${directory})

สำเร็จและรวดเร็ว ยิงเป้าหมายได้ทันที! ขอบคุณ
trueadjustr

25

เพื่อสร้างไดเรกทอรีในเวลาติดตั้ง

install(DIRECTORY DESTINATION ${directory})

ทั้งสองนี้จะทำงานตามเวลาที่กำหนด:

file(MAKE_DIRECTORY ${directory})
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

หากต้องการสร้างระหว่างการสร้างให้ใช้เป้าหมายที่กำหนดเอง:

add_custom_target(mytargetname ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

10

นอกจากการตอบกลับของ Chin Huang คุณยังสามารถทำสิ่งนี้ได้ในเวลาต่อไปนี้ด้วยadd_custom_command:

add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

นอกจากนี้คุณยังสามารถเปลี่ยนช่วงเวลาเมื่อสร้างไดเรกทอรีของคุณด้วยPRE_BUILD| PRE_LINK| POST_BUILDพารามิเตอร์

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