Tạo một thư mục trong CMake


143

Trong CMake, tôi muốn tạo một thư mục nếu nó chưa tồn tại. Tôi có thể làm cái này như thế nào?

Câu trả lời:


250

Khi nào bạn muốn tạo thư mục?

Xây dựng hệ thống

Để tạo một thư mục khi CMake tạo hệ thống xây dựng,

file(MAKE_DIRECTORY ${directory})

Tại thời điểm xây dựng

Trong add_custom_command()lệnh (có thêm quy tắc xây dựng tùy chỉnh cho hệ thống xây dựng được tạo) và add_custom_target()lệnh (có thêm mục tiêu không có đầu ra để nó luôn được xây dựng), bạn chỉ định các lệnh sẽ thực thi khi xây dựng. Tạo một thư mục bằng cách thực hiện lệnh ${CMAKE_COMMAND} -E make_directory. Ví dụ:

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

Lúc cài đặt

Để tạo một thư mục lúc cài đặt,

install(DIRECTORY DESTINATION ${directory})

Succint và nhanh chóng. Đạt mục tiêu ngay lập tức! Cảm ơn.
Truthadjustr

25

Để tạo một thư mục lúc cài đặt,

install(DIRECTORY DESTINATION ${directory})

Cả hai sẽ chạy vào thời gian cấu hình:

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

Để tạo trong quá trình xây dựng, hãy sử dụng mục tiêu tùy chỉnh:

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

10

Ngoài câu trả lời của Chin Huang, bạn cũng có thể thực hiện việc này khi xây dựng với add_custom_command:

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

Bạn cũng có thể thay đổi thời điểm, khi thư mục của bạn được tạo bằng PRE_BUILD| PRE_LINK| POST_BUILDthông số.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.