mirror of
https://github.com/reactos/CMake.git
synced 2024-11-28 14:01:21 +00:00
edcccde7d6
Even though the `file(GLOB)` documentation specifically warns against using it to collect a list of source files, projects often do it anyway. Since it uses `readdir()`, the list of files will be unsorted. This list is often passed directly to add_executable / add_library. Linking binaries with an unsorted list will make it unreproducible, which means that the produced binary will differ depending on the unpredictable `readdir()` order. To solve those reproducibility issues in a lot of programs (which don't explicitly `list(SORT)` the list manually), sort the resulting list of the `file(GLOB)` command. A more detailed rationale about reproducible builds is available [here](https://reproducible-builds.org/).
26 lines
1.2 KiB
CMake
26 lines
1.2 KiB
CMake
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/dir 1/empty_dir")
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/dir 1/non_empty_dir")
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/dir 2/empty_dir")
|
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/dir 2/non_empty_dir")
|
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test/dir 1/dir 1 file" "test file")
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test/dir 1/non_empty_dir/dir 1 subdir file" "test file")
|
|
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test/dir 2/dir 2 file" "test file")
|
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test/dir 2/non_empty_dir/dir 2 subdir file" "test file")
|
|
|
|
file(GLOB CONTENT_LIST "${CMAKE_CURRENT_BINARY_DIR}/test/*/*")
|
|
list(LENGTH CONTENT_LIST CONTENT_COUNT)
|
|
message("content: ${CONTENT_COUNT} ")
|
|
message("${CONTENT_LIST}")
|
|
|
|
file(GLOB CONTENT_LIST LIST_DIRECTORIES true "${CMAKE_CURRENT_BINARY_DIR}/test/*/*")
|
|
list(LENGTH CONTENT_LIST CONTENT_COUNT)
|
|
message("content: ${CONTENT_COUNT} ")
|
|
message("${CONTENT_LIST}")
|
|
|
|
file(GLOB CONTENT_LIST LIST_DIRECTORIES false "${CMAKE_CURRENT_BINARY_DIR}/test/*/*")
|
|
list(LENGTH CONTENT_LIST CONTENT_COUNT)
|
|
message("content: ${CONTENT_COUNT} ")
|
|
message("${CONTENT_LIST}")
|