Dari Wiki:
CMAKE_CURRENT_SOURCE_DIR ini adalah direktori tempat CMakeLists.txt yang sedang diproses berada di
CMAKE_CURRENT_LIST_DIR (sejak 2.8.3) ini adalah direktori dari listfile yang sedang diproses.
Dari Dokumen:
CMAKE_CURRENT_SOURCE_DIR: Jalur ke direktori sumber sedang diproses. Ini jalur lengkap ke direktori sumber yang saat ini sedang diproses oleh cmake.
CMAKE_CURRENT_LIST_DIR: Direktori lengkap listfile yang sedang diproses. Saat CMake memproses file daftar dalam proyek Anda, variabel ini akan selalu disetel ke direktori tempat listfile yang saat ini sedang diproses (CMAKE_CURRENT_LIST_FILE) berada. Nilainya memiliki ruang lingkup dinamis. Ketika CMake mulai memproses perintah dalam file sumber, CMake menetapkan variabel ini ke direktori tempat file ini berada. Ketika CMake selesai memproses perintah dari file itu mengembalikan nilai sebelumnya. Oleh karena itu, nilai variabel di dalam makro atau fungsi adalah direktori file yang memanggil entri paling bawah pada tumpukan panggilan, bukan direktori file yang berisi definisi makro atau fungsi.
Dalam keadaan apa variabel ini memiliki nilai yang berbeda?
./
?Jawaban:
Variabel
CMAKE_CURRENT_SOURCE_DIR
danCMAKE_CURRENT_LIST_DIR
mungkin merujuk ke direktori yang berbeda untuk file daftar CMake yang disertakan oleh file lain dengan perintah include . Misalnya, jika aCMakeLists.txt
ada dalam direktoriproject
dan berisi petunjuk berikutmaka saat
src/CMakeLists.txt
sedang diprosesCMAKE_CURRENT_LIST_DIR
akan merujuk keproject/src
sedangkanCMAKE_CURRENT_SOURCE_DIR
masih menunjuk ke direktori terluarproject
.CMAKE_CURRENT_LIST_DIR
berguna saat Anda perlu mencari file sumber daya seperti file template atau skrip batch yang terletak di sebelahCMakeLists.txt
file yang sedang diproses.Catatan: Saat menggunakan
add_subdirectory()
perintah daripadainclude()
, perilakunya berbeda, dan saatsrc/CMakeLists.txt
diproses, kedua variabel akan mengarah keproject/src
.sumber
CMAKE_CURRENT_LIST_DIR
perubahan itu dengan setiap file Andainclude()
; itu tidak harus dipanggilCMakeLists.txt
.CMAKE_CURRENT_LIST_DIR
daninclude(...)
dalam proyek Anda secara efektif .CMAKE_CURRENT_SOURCE_DIR
lebih miripCMAKE_SOURCE_DIR
daripada yang disiratkan oleh dokumen.add_subdirectory()
? Apakah kedua variabel akan mengarah ke folder?