Qt 6.3.1 Cannot Find <directory>: Permission Denied
-
Using Qt 6.3.1. Trying to build a github cloned libzip on windows 10. The CMakeLists.txt parses fine and have set the paths to the dependent zlib libraries and includes in the CMakeLists.txt file. I successfully build the zlib library in another Qt project without error.
I simplified the path to D:/ctest, to ensure I wasn't making a typo, but I still get the permission denied error. I turned off the virus protection and rebooted the machine.
Any ideas please?
Compilation output
-
Thanks. If you use windows backslashes \ in the CMakeFiles.txt file, you get this error, when making:
Other posts previously alerted me, that I need to use forward slashes, even though I am on windows.
-
It can be either 'C:\test' or 'C:/test'. But that's not the problem. Please show how you use those two cmake variables later on. You're doing something wrong there.
-
It can be either 'C:\test' or 'C:/test'. But that's not the problem. Please show how you use those two cmake variables later on. You're doing something wrong there.
Not sure if you wanted to see the CMakeLists.txt, but here is the compiler output:
12:39:09: Running steps for project libzip...
12:39:09: Starting: "D:\Qt\Tools\CMake_64\bin\cmake.exe" --build D:/c-repos/libzip-qt/build-libzip-Desktop_Qt_6_3_1_MinGW_64_bit-Debug --target all
[1/20 4.3/sec] Generating zip_source_win32handle.html
[2/20 8.5/sec] Generating zip_stat.html
[3/20 12.5/sec] Generating zip_source_write.html
[4/20 16.6/sec] Generating ziptool.html
[5/20 20.7/sec] Generating zip_unchange.html
[6/20 24.9/sec] Generating zip_unchange_all.html
[7/20 29.0/sec] Generating zip_source_win32a.html
[8/20 33.1/sec] Generating zipmerge.html
[9/20 37.2/sec] Generating zip_unchange_archive.html
[10/20 41.2/sec] Generating zipcmp.html
[11/20 6.7/sec] Building C object examples/CMakeFiles/in-memory.dir/in-memory.c.obj
[12/20 7.3/sec] Building C object src/CMakeFiles/zipcmp.dir/diff_output.c.obj
[13/20 7.9/sec] Building C object src/CMakeFiles/zipmerge.dir/zipmerge.c.obj
[14/20 8.5/sec] Building C object src/CMakeFiles/zipcmp.dir/zipcmp.c.obj
[15/20 9.1/sec] Building C object src/CMakeFiles/ziptool.dir/ziptool.c.obj
[16/20 6.9/sec] Linking C shared library lib\libzip.dll
FAILED: lib/libzip.dll lib/libzip.dll.a
cmd.exe /C "cd . && D:\Qt\Tools\mingw1120_64\bin\gcc.exe -g -shared -o lib\libzip.dll -Wl,--out-implib,lib\libzip.dll.a -Wl,--major-image-version,5,--minor-image-version,5 lib/CMakeFiles/zip.dir/zip_add.c.obj lib/CMakeFiles/zip.dir/zip_add_dir.c.obj lib/CMakeFiles/zip.dir/zip_add_entry.c.obj lib/CMakeFiles/zip.dir/zip_algorithm_deflate.c.obj lib/CMakeFiles/zip.dir/zip_buffer.c.obj lib/CMakeFiles/zip.dir/zip_close.c.obj lib/CMakeFiles/zip.dir/zip_delete.c.obj lib/CMakeFiles/zip.dir/zip_dir_add.c.obj lib/CMakeFiles/zip.dir/zip_dirent.c.obj lib/CMakeFiles/zip.dir/zip_discard.c.obj lib/CMakeFiles/zip.dir/zip_entry.c.obj lib/CMakeFiles/zip.dir/zip_error.c.obj lib/CMakeFiles/zip.dir/zip_error_clear.c.obj lib/CMakeFiles/zip.dir/zip_error_get.c.obj lib/CMakeFiles/zip.dir/zip_error_get_sys_type.c.obj lib/CMakeFiles/zip.dir/zip_error_strerror.c.obj lib/CMakeFiles/zip.dir/zip_error_to_str.c.obj lib/CMakeFiles/zip.dir/zip_extra_field.c.obj lib/CMakeFiles/zip.dir/zip_extra_field_api.c.obj lib/CMakeFiles/zip.dir/zip_fclose.c.obj lib/CMakeFiles/zip.dir/zip_fdopen.c.obj lib/CMakeFiles/zip.dir/zip_file_add.c.obj lib/CMakeFiles/zip.dir/zip_file_error_clear.c.obj lib/CMakeFiles/zip.dir/zip_file_error_get.c.obj lib/CMakeFiles/zip.dir/zip_file_get_comment.c.obj lib/CMakeFiles/zip.dir/zip_file_get_external_attributes.c.obj lib/CMakeFiles/zip.dir/zip_file_get_offset.c.obj lib/CMakeFiles/zip.dir/zip_file_rename.c.obj lib/CMakeFiles/zip.dir/zip_file_replace.c.obj lib/CMakeFiles/zip.dir/zip_file_set_comment.c.obj lib/CMakeFiles/zip.dir/zip_file_set_encryption.c.obj lib/CMakeFiles/zip.dir/zip_file_set_external_attributes.c.obj lib/CMakeFiles/zip.dir/zip_file_set_mtime.c.obj lib/CMakeFiles/zip.dir/zip_file_strerror.c.obj lib/CMakeFiles/zip.dir/zip_fopen.c.obj lib/CMakeFiles/zip.dir/zip_fopen_encrypted.c.obj lib/CMakeFiles/zip.dir/zip_fopen_index.c.obj lib/CMakeFiles/zip.dir/zip_fopen_index_encrypted.c.obj lib/CMakeFiles/zip.dir/zip_fread.c.obj lib/CMakeFiles/zip.dir/zip_fseek.c.obj lib/CMakeFiles/zip.dir/zip_ftell.c.obj lib/CMakeFiles/zip.dir/zip_get_archive_comment.c.obj lib/CMakeFiles/zip.dir/zip_get_archive_flag.c.obj lib/CMakeFiles/zip.dir/zip_get_encryption_implementation.c.obj lib/CMakeFiles/zip.dir/zip_get_file_comment.c.obj lib/CMakeFiles/zip.dir/zip_get_name.c.obj lib/CMakeFiles/zip.dir/zip_get_num_entries.c.obj lib/CMakeFiles/zip.dir/zip_get_num_files.c.obj lib/CMakeFiles/zip.dir/zip_hash.c.obj lib/CMakeFiles/zip.dir/zip_io_util.c.obj lib/CMakeFiles/zip.dir/zip_libzip_version.c.obj lib/CMakeFiles/zip.dir/zip_memdup.c.obj lib/CMakeFiles/zip.dir/zip_name_locate.c.obj lib/CMakeFiles/zip.dir/zip_new.c.obj lib/CMakeFiles/zip.dir/zip_open.c.obj lib/CMakeFiles/zip.dir/zip_pkware.c.obj lib/CMakeFiles/zip.dir/zip_progress.c.obj lib/CMakeFiles/zip.dir/zip_rename.c.obj lib/CMakeFiles/zip.dir/zip_replace.c.obj lib/CMakeFiles/zip.dir/zip_set_archive_comment.c.obj lib/CMakeFiles/zip.dir/zip_set_archive_flag.c.obj lib/CMakeFiles/zip.dir/zip_set_default_password.c.obj lib/CMakeFiles/zip.dir/zip_set_file_comment.c.obj lib/CMakeFiles/zip.dir/zip_set_file_compression.c.obj lib/CMakeFiles/zip.dir/zip_set_name.c.obj lib/CMakeFiles/zip.dir/zip_source_accept_empty.c.obj lib/CMakeFiles/zip.dir/zip_source_begin_write.c.obj lib/CMakeFiles/zip.dir/zip_source_begin_write_cloning.c.obj lib/CMakeFiles/zip.dir/zip_source_buffer.c.obj lib/CMakeFiles/zip.dir/zip_source_call.c.obj lib/CMakeFiles/zip.dir/zip_source_close.c.obj lib/CMakeFiles/zip.dir/zip_source_commit_write.c.obj lib/CMakeFiles/zip.dir/zip_source_compress.c.obj lib/CMakeFiles/zip.dir/zip_source_crc.c.obj lib/CMakeFiles/zip.dir/zip_source_error.c.obj lib/CMakeFiles/zip.dir/zip_source_file_common.c.obj lib/CMakeFiles/zip.dir/zip_source_file_stdio.c.obj lib/CMakeFiles/zip.dir/zip_source_free.c.obj lib/CMakeFiles/zip.dir/zip_source_function.c.obj lib/CMakeFiles/zip.dir/zip_source_get_file_attributes.c.obj lib/CMakeFiles/zip.dir/zip_source_is_deleted.c.obj lib/CMakeFiles/zip.dir/zip_source_layered.c.obj lib/CMakeFiles/zip.dir/zip_source_open.c.obj lib/CMakeFiles/zip.dir/zip_source_pkware_decode.c.obj lib/CMakeFiles/zip.dir/zip_source_pkware_encode.c.obj lib/CMakeFiles/zip.dir/zip_source_read.c.obj lib/CMakeFiles/zip.dir/zip_source_remove.c.obj lib/CMakeFiles/zip.dir/zip_source_rollback_write.c.obj lib/CMakeFiles/zip.dir/zip_source_seek.c.obj lib/CMakeFiles/zip.dir/zip_source_seek_write.c.obj lib/CMakeFiles/zip.dir/zip_source_stat.c.obj lib/CMakeFiles/zip.dir/zip_source_supports.c.obj lib/CMakeFiles/zip.dir/zip_source_tell.c.obj lib/CMakeFiles/zip.dir/zip_source_tell_write.c.obj lib/CMakeFiles/zip.dir/zip_source_window.c.obj lib/CMakeFiles/zip.dir/zip_source_write.c.obj lib/CMakeFiles/zip.dir/zip_source_zip.c.obj lib/CMakeFiles/zip.dir/zip_source_zip_new.c.obj lib/CMakeFiles/zip.dir/zip_stat.c.obj lib/CMakeFiles/zip.dir/zip_stat_index.c.obj lib/CMakeFiles/zip.dir/zip_stat_init.c.obj lib/CMakeFiles/zip.dir/zip_strerror.c.obj lib/CMakeFiles/zip.dir/zip_string.c.obj lib/CMakeFiles/zip.dir/zip_unchange.c.obj lib/CMakeFiles/zip.dir/zip_unchange_all.c.obj lib/CMakeFiles/zip.dir/zip_unchange_archive.c.obj lib/CMakeFiles/zip.dir/zip_unchange_data.c.obj lib/CMakeFiles/zip.dir/zip_utf-8.c.obj lib/CMakeFiles/zip.dir/zip_err_str.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_named.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_utf16.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_utf8.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_ansi.c.obj lib/CMakeFiles/zip.dir/zip_random_win32.c.obj lib/CMakeFiles/zip.dir/zip_crypto_win.c.obj lib/CMakeFiles/zip.dir/zip_winzip_aes.c.obj lib/CMakeFiles/zip.dir/zip_source_winzip_aes_decode.c.obj lib/CMakeFiles/zip.dir/zip_source_winzip_aes_encode.c.obj -ladvapi32 -lbcrypt D:/ctest -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
D:/Qt/Tools/mingw1120_64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find D:/ctest: Permission denied
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
12:39:12: The process "D:\Qt\Tools\CMake_64\bin\cmake.exe" exited with code 1.
Error while building/deploying project libzip (kit: Desktop Qt 6.3.1 MinGW 64-bit)
When executing step "Build"
12:39:12: Elapsed time: 00:03. -
A problem seems to be with my setting the ZLIB_LIBRARY path to D:/something, because if I set it to /ctest, then I get a ninja error:
ctest needed by lib/libzip.dll, missing and no known rule to make it: -
Not sure if you wanted to see the CMakeLists.txt, but here is the compiler output:
12:39:09: Running steps for project libzip...
12:39:09: Starting: "D:\Qt\Tools\CMake_64\bin\cmake.exe" --build D:/c-repos/libzip-qt/build-libzip-Desktop_Qt_6_3_1_MinGW_64_bit-Debug --target all
[1/20 4.3/sec] Generating zip_source_win32handle.html
[2/20 8.5/sec] Generating zip_stat.html
[3/20 12.5/sec] Generating zip_source_write.html
[4/20 16.6/sec] Generating ziptool.html
[5/20 20.7/sec] Generating zip_unchange.html
[6/20 24.9/sec] Generating zip_unchange_all.html
[7/20 29.0/sec] Generating zip_source_win32a.html
[8/20 33.1/sec] Generating zipmerge.html
[9/20 37.2/sec] Generating zip_unchange_archive.html
[10/20 41.2/sec] Generating zipcmp.html
[11/20 6.7/sec] Building C object examples/CMakeFiles/in-memory.dir/in-memory.c.obj
[12/20 7.3/sec] Building C object src/CMakeFiles/zipcmp.dir/diff_output.c.obj
[13/20 7.9/sec] Building C object src/CMakeFiles/zipmerge.dir/zipmerge.c.obj
[14/20 8.5/sec] Building C object src/CMakeFiles/zipcmp.dir/zipcmp.c.obj
[15/20 9.1/sec] Building C object src/CMakeFiles/ziptool.dir/ziptool.c.obj
[16/20 6.9/sec] Linking C shared library lib\libzip.dll
FAILED: lib/libzip.dll lib/libzip.dll.a
cmd.exe /C "cd . && D:\Qt\Tools\mingw1120_64\bin\gcc.exe -g -shared -o lib\libzip.dll -Wl,--out-implib,lib\libzip.dll.a -Wl,--major-image-version,5,--minor-image-version,5 lib/CMakeFiles/zip.dir/zip_add.c.obj lib/CMakeFiles/zip.dir/zip_add_dir.c.obj lib/CMakeFiles/zip.dir/zip_add_entry.c.obj lib/CMakeFiles/zip.dir/zip_algorithm_deflate.c.obj lib/CMakeFiles/zip.dir/zip_buffer.c.obj lib/CMakeFiles/zip.dir/zip_close.c.obj lib/CMakeFiles/zip.dir/zip_delete.c.obj lib/CMakeFiles/zip.dir/zip_dir_add.c.obj lib/CMakeFiles/zip.dir/zip_dirent.c.obj lib/CMakeFiles/zip.dir/zip_discard.c.obj lib/CMakeFiles/zip.dir/zip_entry.c.obj lib/CMakeFiles/zip.dir/zip_error.c.obj lib/CMakeFiles/zip.dir/zip_error_clear.c.obj lib/CMakeFiles/zip.dir/zip_error_get.c.obj lib/CMakeFiles/zip.dir/zip_error_get_sys_type.c.obj lib/CMakeFiles/zip.dir/zip_error_strerror.c.obj lib/CMakeFiles/zip.dir/zip_error_to_str.c.obj lib/CMakeFiles/zip.dir/zip_extra_field.c.obj lib/CMakeFiles/zip.dir/zip_extra_field_api.c.obj lib/CMakeFiles/zip.dir/zip_fclose.c.obj lib/CMakeFiles/zip.dir/zip_fdopen.c.obj lib/CMakeFiles/zip.dir/zip_file_add.c.obj lib/CMakeFiles/zip.dir/zip_file_error_clear.c.obj lib/CMakeFiles/zip.dir/zip_file_error_get.c.obj lib/CMakeFiles/zip.dir/zip_file_get_comment.c.obj lib/CMakeFiles/zip.dir/zip_file_get_external_attributes.c.obj lib/CMakeFiles/zip.dir/zip_file_get_offset.c.obj lib/CMakeFiles/zip.dir/zip_file_rename.c.obj lib/CMakeFiles/zip.dir/zip_file_replace.c.obj lib/CMakeFiles/zip.dir/zip_file_set_comment.c.obj lib/CMakeFiles/zip.dir/zip_file_set_encryption.c.obj lib/CMakeFiles/zip.dir/zip_file_set_external_attributes.c.obj lib/CMakeFiles/zip.dir/zip_file_set_mtime.c.obj lib/CMakeFiles/zip.dir/zip_file_strerror.c.obj lib/CMakeFiles/zip.dir/zip_fopen.c.obj lib/CMakeFiles/zip.dir/zip_fopen_encrypted.c.obj lib/CMakeFiles/zip.dir/zip_fopen_index.c.obj lib/CMakeFiles/zip.dir/zip_fopen_index_encrypted.c.obj lib/CMakeFiles/zip.dir/zip_fread.c.obj lib/CMakeFiles/zip.dir/zip_fseek.c.obj lib/CMakeFiles/zip.dir/zip_ftell.c.obj lib/CMakeFiles/zip.dir/zip_get_archive_comment.c.obj lib/CMakeFiles/zip.dir/zip_get_archive_flag.c.obj lib/CMakeFiles/zip.dir/zip_get_encryption_implementation.c.obj lib/CMakeFiles/zip.dir/zip_get_file_comment.c.obj lib/CMakeFiles/zip.dir/zip_get_name.c.obj lib/CMakeFiles/zip.dir/zip_get_num_entries.c.obj lib/CMakeFiles/zip.dir/zip_get_num_files.c.obj lib/CMakeFiles/zip.dir/zip_hash.c.obj lib/CMakeFiles/zip.dir/zip_io_util.c.obj lib/CMakeFiles/zip.dir/zip_libzip_version.c.obj lib/CMakeFiles/zip.dir/zip_memdup.c.obj lib/CMakeFiles/zip.dir/zip_name_locate.c.obj lib/CMakeFiles/zip.dir/zip_new.c.obj lib/CMakeFiles/zip.dir/zip_open.c.obj lib/CMakeFiles/zip.dir/zip_pkware.c.obj lib/CMakeFiles/zip.dir/zip_progress.c.obj lib/CMakeFiles/zip.dir/zip_rename.c.obj lib/CMakeFiles/zip.dir/zip_replace.c.obj lib/CMakeFiles/zip.dir/zip_set_archive_comment.c.obj lib/CMakeFiles/zip.dir/zip_set_archive_flag.c.obj lib/CMakeFiles/zip.dir/zip_set_default_password.c.obj lib/CMakeFiles/zip.dir/zip_set_file_comment.c.obj lib/CMakeFiles/zip.dir/zip_set_file_compression.c.obj lib/CMakeFiles/zip.dir/zip_set_name.c.obj lib/CMakeFiles/zip.dir/zip_source_accept_empty.c.obj lib/CMakeFiles/zip.dir/zip_source_begin_write.c.obj lib/CMakeFiles/zip.dir/zip_source_begin_write_cloning.c.obj lib/CMakeFiles/zip.dir/zip_source_buffer.c.obj lib/CMakeFiles/zip.dir/zip_source_call.c.obj lib/CMakeFiles/zip.dir/zip_source_close.c.obj lib/CMakeFiles/zip.dir/zip_source_commit_write.c.obj lib/CMakeFiles/zip.dir/zip_source_compress.c.obj lib/CMakeFiles/zip.dir/zip_source_crc.c.obj lib/CMakeFiles/zip.dir/zip_source_error.c.obj lib/CMakeFiles/zip.dir/zip_source_file_common.c.obj lib/CMakeFiles/zip.dir/zip_source_file_stdio.c.obj lib/CMakeFiles/zip.dir/zip_source_free.c.obj lib/CMakeFiles/zip.dir/zip_source_function.c.obj lib/CMakeFiles/zip.dir/zip_source_get_file_attributes.c.obj lib/CMakeFiles/zip.dir/zip_source_is_deleted.c.obj lib/CMakeFiles/zip.dir/zip_source_layered.c.obj lib/CMakeFiles/zip.dir/zip_source_open.c.obj lib/CMakeFiles/zip.dir/zip_source_pkware_decode.c.obj lib/CMakeFiles/zip.dir/zip_source_pkware_encode.c.obj lib/CMakeFiles/zip.dir/zip_source_read.c.obj lib/CMakeFiles/zip.dir/zip_source_remove.c.obj lib/CMakeFiles/zip.dir/zip_source_rollback_write.c.obj lib/CMakeFiles/zip.dir/zip_source_seek.c.obj lib/CMakeFiles/zip.dir/zip_source_seek_write.c.obj lib/CMakeFiles/zip.dir/zip_source_stat.c.obj lib/CMakeFiles/zip.dir/zip_source_supports.c.obj lib/CMakeFiles/zip.dir/zip_source_tell.c.obj lib/CMakeFiles/zip.dir/zip_source_tell_write.c.obj lib/CMakeFiles/zip.dir/zip_source_window.c.obj lib/CMakeFiles/zip.dir/zip_source_write.c.obj lib/CMakeFiles/zip.dir/zip_source_zip.c.obj lib/CMakeFiles/zip.dir/zip_source_zip_new.c.obj lib/CMakeFiles/zip.dir/zip_stat.c.obj lib/CMakeFiles/zip.dir/zip_stat_index.c.obj lib/CMakeFiles/zip.dir/zip_stat_init.c.obj lib/CMakeFiles/zip.dir/zip_strerror.c.obj lib/CMakeFiles/zip.dir/zip_string.c.obj lib/CMakeFiles/zip.dir/zip_unchange.c.obj lib/CMakeFiles/zip.dir/zip_unchange_all.c.obj lib/CMakeFiles/zip.dir/zip_unchange_archive.c.obj lib/CMakeFiles/zip.dir/zip_unchange_data.c.obj lib/CMakeFiles/zip.dir/zip_utf-8.c.obj lib/CMakeFiles/zip.dir/zip_err_str.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_named.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_utf16.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_utf8.c.obj lib/CMakeFiles/zip.dir/zip_source_file_win32_ansi.c.obj lib/CMakeFiles/zip.dir/zip_random_win32.c.obj lib/CMakeFiles/zip.dir/zip_crypto_win.c.obj lib/CMakeFiles/zip.dir/zip_winzip_aes.c.obj lib/CMakeFiles/zip.dir/zip_source_winzip_aes_decode.c.obj lib/CMakeFiles/zip.dir/zip_source_winzip_aes_encode.c.obj -ladvapi32 -lbcrypt D:/ctest -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
D:/Qt/Tools/mingw1120_64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find D:/ctest: Permission denied
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
12:39:12: The process "D:\Qt\Tools\CMake_64\bin\cmake.exe" exited with code 1.
Error while building/deploying project libzip (kit: Desktop Qt 6.3.1 MinGW 64-bit)
When executing step "Build"
12:39:12: Elapsed time: 00:03.@Simplexity said in Qt 6.3.1 Cannot Find <directory>: Permission Denied:
cmd.exe /C "cd . && D:\Qt\Tools\mingw1120_64\bin\gcc.exe -g -shared -o lib\libzip.dll -Wl,--out-implib,lib\libzip.dll.a -Wl,--major-image-version,5,--minor-image-version,5 [lib/CMakeFiles/zip.dir/*.obj] -ladvapi32 -lbcrypt D:/ctest -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
This command only shows
D:/ctest
which tells the linker to link to a filectest
in the directoryD:/
. What you need instead is-LD:/ctest
. Please provide the full CMakeLists.txt (as text, not as screenshot!) so we can figure out why this problem occurs in the generated command. -
@Simplexity said in Qt 6.3.1 Cannot Find <directory>: Permission Denied:
cmd.exe /C "cd . && D:\Qt\Tools\mingw1120_64\bin\gcc.exe -g -shared -o lib\libzip.dll -Wl,--out-implib,lib\libzip.dll.a -Wl,--major-image-version,5,--minor-image-version,5 [lib/CMakeFiles/zip.dir/*.obj] -ladvapi32 -lbcrypt D:/ctest -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
This command only shows
D:/ctest
which tells the linker to link to a filectest
in the directoryD:/
. What you need instead is-LD:/ctest
. Please provide the full CMakeLists.txt (as text, not as screenshot!) so we can figure out why this problem occurs in the generated command.Many thanks, here is the CMakeLists.txt I am using. It is the current version from https://github.com/nih-at/libzip, where I have added the CMake set commands to set the ZLIB variables.
cmake_minimum_required(VERSION 3.0.2)
#set(ZLIB_LIBRARY "D:/c-repos/zlib-qt/build-zlib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug")
#set(ZLIB_INCLUDE_DIR "D:/c-repos/zlib-qt/build-zlib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug")#set(ZLIB_LIBRARY "D:/ctest")
#set(ZLIB_INCLUDE_DIR "D:/ctest")set(ZLIB_LIBRARY ctest)
set(ZLIB_INCLUDE_DIR ctest)list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if (${CMAKE_VERSION} VERSION_LESS "3.17.0")
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake-compat)
endif()project(libzip
VERSION 1.9.2
LANGUAGES C)option(ENABLE_COMMONCRYPTO "Enable use of CommonCrypto" ON)
option(ENABLE_GNUTLS "Enable use of GnuTLS" ON)
option(ENABLE_MBEDTLS "Enable use of mbed TLS" ON)
option(ENABLE_OPENSSL "Enable use of OpenSSL" ON)
option(ENABLE_WINDOWS_CRYPTO "Enable use of Windows cryptography libraries" ON)option(ENABLE_BZIP2 "Enable use of BZip2" ON)
option(ENABLE_LZMA "Enable use of LZMA" ON)
option(ENABLE_ZSTD "Enable use of Zstandard" ON)option(BUILD_TOOLS "Build tools in the src directory (zipcmp, zipmerge, ziptool)" ON)
option(BUILD_REGRESS "Build regression tests" ON)
option(BUILD_EXAMPLES "Build examples" ON)
option(BUILD_DOC "Build documentation" ON)include(CheckFunctionExists)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckTypeSize)
include(CheckCSourceRuns)
include(CheckCSourceCompiles)
include(CheckStructHasMember)
include(TestBigEndian)
include(GNUInstallDirs)if(ENABLE_COMMONCRYPTO)
check_include_files(CommonCrypto/CommonCrypto.h COMMONCRYPTO_FOUND)
endif()
if(ENABLE_GNUTLS)
find_package(Nettle 3.0)
find_package(GnuTLS)
endif()
if(ENABLE_MBEDTLS)
find_package(MbedTLS 1.0)
endif()
if(ENABLE_OPENSSL)
find_package(OpenSSL)
endif()
if(WIN32)
if(ENABLE_WINDOWS_CRYPTO)
set(WINDOWS_CRYPTO_FOUND TRUE)
endif()
endif()option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(LIBZIP_DO_INSTALL "Install libzip and the related files" ON)option(SHARED_LIB_VERSIONNING "Add SO version in .so build" ON)
find_program(MDOCTOOL NAMES mandoc groff)
if (MDOCTOOL)
set(DOCUMENTATION_FORMAT "mdoc" CACHE STRING "Documentation format")
else()
find_program(MANTOOL NAMES nroff)
if (MANTOOL)
set(DOCUMENTATION_FORMAT "man" CACHE STRING "Documentation format")
else()
set(DOCUMENTATION_FORMAT "html" CACHE STRING "Documentation format")
endif()
endif()include(Dist)
Dist(${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION})#ADD_CUSTOM_TARGET(uninstall
COMMAND cat ${PROJECT_BINARY_DIR}/install_manifest.txt | xargs rm
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
if(BUILD_SHARED_LIBS)
set(HAVE_SHARED TRUE)
else()
set(ZIP_STATIC TRUE)
endif()Checks
check_function_exists(_close HAVE__CLOSE)
check_function_exists(_dup HAVE__DUP)
check_function_exists(_fdopen HAVE__FDOPEN)
check_function_exists(_fileno HAVE__FILENO)
check_function_exists(_setmode HAVE__SETMODE)
check_symbol_exists(_snprintf stdio.h HAVE__SNPRINTF)
check_function_exists(_strdup HAVE__STRDUP)
check_symbol_exists(_stricmp string.h HAVE__STRICMP)
check_function_exists(_strtoi64 HAVE__STRTOI64)
check_function_exists(_strtoui64 HAVE__STRTOUI64)
check_function_exists(_unlink HAVE__UNLINK)
check_function_exists(arc4random HAVE_ARC4RANDOM)
check_function_exists(clonefile HAVE_CLONEFILE)
check_function_exists(explicit_bzero HAVE_EXPLICIT_BZERO)
check_function_exists(explicit_memset HAVE_EXPLICIT_MEMSET)
check_function_exists(fchmod HAVE_FCHMOD)
check_function_exists(fileno HAVE_FILENO)
check_function_exists(fseeko HAVE_FSEEKO)
check_function_exists(ftello HAVE_FTELLO)
check_function_exists(getprogname HAVE_GETPROGNAME)
check_function_exists(localtime_r HAVE_LOCALTIME_R)
check_function_exists(setmode HAVE_SETMODE)
check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF)
check_symbol_exists(strcasecmp strings.h HAVE_STRCASECMP)
check_function_exists(strdup HAVE_STRDUP)
check_function_exists(stricmp HAVE_STRICMP)
check_function_exists(strtoll HAVE_STRTOLL)
check_function_exists(strtoull HAVE_STRTOULL)check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
fts functions may be in external library
if(HAVE_FTS_H)
check_function_exists(fts_open HAVE_FTS_OPEN)
if(NOT HAVE_FTS_OPEN)
check_library_exists(fts fts_open "" HAVE_LIB_FTS)
else(NOT HAVE_FTS_OPEN)
set(HAVE_LIB_FTS "" CACHE INTERNAL "")
endif(NOT HAVE_FTS_OPEN)
else(HAVE_FTS_H)
set(HAVE_LIB_FTS "" CACHE INTERNAL "")
endif(HAVE_FTS_H)if(HAVE_LIB_FTS)
set(FTS_LIB fts CACHE INTERNAL "")
else()
set(FTS_LIB "" CACHE INTERNAL "")
endif()check_include_files(stdbool.h HAVE_STDBOOL_H)
check_include_files(strings.h HAVE_STRINGS_H)
check_include_files(unistd.h HAVE_UNISTD_H)check_include_files(inttypes.h HAVE_INTTYPES_H_LIBZIP)
check_include_files(stdint.h HAVE_STDINT_H_LIBZIP)
check_include_files(sys/types.h HAVE_SYS_TYPES_H_LIBZIP)TODO: fix test
this test does not find __progname even when it exists
#check_symbol_exists(__progname stdlib.h HAVE___PROGNAME)
check_type_size(__int8 __INT8_LIBZIP)
check_type_size(int8_t INT8_T_LIBZIP)
check_type_size(uint8_t UINT8_T_LIBZIP)
check_type_size(__int16 __INT16_LIBZIP)
check_type_size(int16_t INT16_T_LIBZIP)
check_type_size(uint16_t UINT16_T_LIBZIP)
check_type_size(__int32 __INT32_LIBZIP)
check_type_size(int32_t INT32_T_LIBZIP)
check_type_size(uint32_t UINT32_T_LIBZIP)
check_type_size(__int64 __INT64_LIBZIP)
check_type_size(int64_t INT64_T_LIBZIP)
check_type_size(uint64_t UINT64_T_LIBZIP)
check_type_size("short" SHORT_LIBZIP)
check_type_size("int" INT_LIBZIP)
check_type_size("long" LONG_LIBZIP)
check_type_size("long long" LONG_LONG_LIBZIP)
check_type_size("off_t" SIZEOF_OFF_T)
check_type_size("size_t" SIZEOF_SIZE_T)check_c_source_compiles("#include <sys/ioctl.h>
#include <linux/fs.h>
int main(int argc, char *argv[]) { unsigned long x = FICLONERANGE; }" HAVE_FICLONERANGE)check_c_source_compiles("
int foo(char * _Nullable bar);
int main(int argc, char *argv[]) { }" HAVE_NULLABLE)test_big_endian(WORDS_BIGENDIAN)
find_package(ZLIB 1.1.2 REQUIRED)
if(ENABLE_BZIP2)
find_package(BZip2)
if(BZIP2_FOUND)
set(HAVE_LIBBZ2 1)
else()
message(WARNING "-- bzip2 library not found; bzip2 support disabled")
endif(BZIP2_FOUND)
endif(ENABLE_BZIP2)if(ENABLE_LZMA)
find_package(LibLZMA 5.2)
if(LIBLZMA_FOUND)
set(HAVE_LIBLZMA 1)
else()
message(WARNING "-- lzma library not found; lzma/xz support disabled")
endif(LIBLZMA_FOUND)
endif(ENABLE_LZMA)if(ENABLE_ZSTD)
find_package(Zstd 1.3.6)
if(Zstd_FOUND)
set(HAVE_LIBZSTD 1)
else()
message(WARNING "-- zstd library not found; zstandard support disabled")
endif(Zstd_FOUND)
endif(ENABLE_ZSTD)if (COMMONCRYPTO_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_COMMONCRYPTO 1)
elseif (WINDOWS_CRYPTO_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_WINDOWS_CRYPTO 1)
elseif (GNUTLS_FOUND AND NETTLE_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_GNUTLS 1)
elseif (OPENSSL_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_OPENSSL 1)
elseif (MBEDTLS_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_MBEDTLS 1)
endif()if ((ENABLE_COMMONCRYPTO OR ENABLE_GNUTLS OR ENABLE_MBEDTLS OR ENABLE_OPENSSL OR ENABLE_WINDOWS_CRYPTO) AND NOT HAVE_CRYPTO)
message(WARNING "-- neither Common Crypto, GnuTLS, mbed TLS, OpenSSL, nor Windows Cryptography found; AES support disabled")
endif()if(MSVC)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
add_compile_definitions(_CRT_NONSTDC_NO_DEPRECATE)
endif(MSVC)if(WIN32)
if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
add_compile_definitions(MS_UWP)
endif(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
endif(WIN32)rpath handling: use rpath in installed binaries
if(NOT CMAKE_SYSTEM_NAME MATCHES Linux)
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif()for code completion frameworks
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Testing
ENABLE_TESTING()
Targets
ADD_SUBDIRECTORY(lib)
if(BUILD_DOC)
ADD_SUBDIRECTORY(man)
endif()if(BUILD_TOOLS)
ADD_SUBDIRECTORY(src)
else(BUILD_TOOLS)
if(BUILD_REGRESS)
message(WARNING "-- tools build has been disabled, but they are needed for regression tests; regression testing disabled")
set(BUILD_REGRESS OFF)
endif(BUILD_REGRESS)
endif()include(FindPerl)
if(BUILD_REGRESS AND NOT PERL_FOUND)
message(WARNING "-- perl not found, regression testing disabled")
set(BUILD_REGRESS OFF)
endif()if(BUILD_REGRESS)
add_subdirectory(regress)
endif()if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()pkgconfig file
file(RELATIVE_PATH pc_relative_bindir ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_BINDIR})
set(bindir "${prefix}/${pc_relative_bindir}")
file(RELATIVE_PATH pc_relative_libdir ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_LIBDIR})
set(libdir "${prefix}/${pc_relative_libdir}")
file(RELATIVE_PATH pc_relative_includedir ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(includedir "${prefix}/${pc_relative_includedir}")
if(CMAKE_SYSTEM_NAME MATCHES BSD)
set(PKG_CONFIG_RPATH "-Wl,-R${libdir}")
endif(CMAKE_SYSTEM_NAME MATCHES BSD)
get_target_property(LIBS_PRIVATE zip LINK_LIBRARIES)
foreach(LIB ${LIBS_PRIVATE})
if(LIB MATCHES "^/")
get_filename_component(LIB ${LIB} NAME_WE)
string(REGEX REPLACE "^lib" "" LIB ${LIB})
endif()
set(LIBS "${LIBS} -l${LIB}")
endforeach()
string(REGEX REPLACE "-lBZip2::BZip2" "-lbz2" LIBS ${LIBS})
string(REGEX REPLACE "-lLibLZMA::LibLZMA" "-llzma" LIBS ${LIBS})
string(REGEX REPLACE "-lZstd::Zstd" "-lzstd" LIBS ${LIBS})
string(REGEX REPLACE "-lOpenSSL::Crypto" "-lssl -lcrypto" LIBS ${LIBS})
string(REGEX REPLACE "-lZLIB::ZLIB" "-lz" LIBS ${LIBS})
string(REGEX REPLACE "-lGnuTLS::GnuTLS" "-lgnutls" LIBS ${LIBS})
string(REGEX REPLACE "-lNettle::Nettle" "-lnettle" LIBS ${LIBS})
configure_file(libzip.pc.in libzip.pc @ONLY)
if(LIBZIP_DO_INSTALL)
install(FILES ${PROJECT_BINARY_DIR}/libzip.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()fixed size integral types
if(HAVE_INTTYPES_H_LIBZIP)
set(LIBZIP_TYPES_INCLUDE "#if !defined(__STDC_FORMAT_MACROS)
#define __STDC_FORMAT_MACROS 1
#endif
#include <inttypes.h>")
elseif(HAVE_STDINT_H_LIBZIP)
set(LIBZIP_TYPES_INCLUDE "#include <stdint.h>")
elseif(HAVE_SYS_TYPES_H_LIBZIP)
set(LIBZIP_TYPES_INCLUDE "#include <sys/types.h>")
endif()if(HAVE_INT8_T_LIBZIP)
set(ZIP_INT8_T int8_t)
elseif(HAVE___INT8_LIBZIP)
set(ZIP_INT8_T __int8)
else()
set(ZIP_INT8_T "signed char")
endif()if(HAVE_UINT8_T_LIBZIP)
set(ZIP_UINT8_T uint8_t)
elseif(HAVE___INT8_LIBZIP)
set(ZIP_UINT8_T "unsigned __int8")
else()
set(ZIP_UINT8_T "unsigned char")
endif()if(HAVE_INT16_T_LIBZIP)
set(ZIP_INT16_T int16_t)
elseif(HAVE___INT16_LIBZIP)
set(INT16_T_LIBZIP __int16)
elseif(SHORT_LIBZIP EQUAL 2)
set(INT16_T_LIBZIP short)
endif()if(HAVE_UINT16_T_LIBZIP)
set(ZIP_UINT16_T uint16_t)
elseif(HAVE___INT16_LIBZIP)
set(UINT16_T_LIBZIP "unsigned __int16")
elseif(SHORT_LIBZIP EQUAL 2)
set(UINT16_T_LIBZIP "unsigned short")
endif()if(HAVE_INT32_T_LIBZIP)
set(ZIP_INT32_T int32_t)
elseif(HAVE___INT32_LIBZIP)
set(ZIP_INT32_T __int32)
elseif(INT_LIBZIP EQUAL 4)
set(ZIP_INT32_T int)
elseif(LONG_LIBZIP EQUAL 4)
set(ZIP_INT32_T long)
endif()if(HAVE_UINT32_T_LIBZIP)
set(ZIP_UINT32_T uint32_t)
elseif(HAVE___INT32_LIBZIP)
set(ZIP_UINT32_T "unsigned __int32")
elseif(INT_LIBZIP EQUAL 4)
set(ZIP_UINT32_T "unsigned int")
elseif(LONG_LIBZIP EQUAL 4)
set(ZIP_UINT32_T "unsigned long")
endif()if(HAVE_INT64_T_LIBZIP)
set(ZIP_INT64_T int64_t)
elseif(HAVE___INT64_LIBZIP)
set(ZIP_INT64_T __int64)
elseif(LONG_LIBZIP EQUAL 8)
set(ZIP_INT64_T long)
elseif(LONG_LONG_LIBZIP EQUAL 8)
set(ZIP_INT64_T "long long")
endif()if(HAVE_UINT64_T_LIBZIP)
set(ZIP_UINT64_T uint64_t)
elseif(HAVE___INT64_LIBZIP)
set(ZIP_UINT64_T "unsigned __int64")
elseif(LONG_LIBZIP EQUAL 8)
set(ZIP_UINT64_T "unsigned long")
elseif(LONG_LONG_LIBZIP EQUAL 8)
set(ZIP_UINT64_T "unsigned long long")
endif()if(HAVE_NULLABLE)
set(ZIP_NULLABLE_DEFINES)
else()
set(ZIP_NULLABLE_DEFINES "#define _Nullable
#define _Nonnull")
endif()write out config file
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in ${PROJECT_BINARY_DIR}/config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in ${PROJECT_BINARY_DIR}/zipconf.h)for tests
set(srcdir ${CMAKE_CURRENT_SOURCE_DIR}/regress)
set(abs_srcdir ${CMAKE_CURRENT_SOURCE_DIR}/regress)
set(top_builddir ${PROJECT_BINARY_DIR}) # used to find config.hconfigure_file(regress/nihtest.conf.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/nihtest.conf @ONLY)
file(COPY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/nihtest.conf
DESTINATION ${PROJECT_BINARY_DIR}/regress
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)configure_file(regress/runtest.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/runtest @ONLY)
file(COPY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/runtest
DESTINATION ${PROJECT_BINARY_DIR}/regress
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)create package config file
include(CMakePackageConfigHelpers)
write_basic_package_version_file("${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
COMPATIBILITY AnyNewerVersion)configure_package_config_file("${PROJECT_NAME}-config.cmake.in" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libzip)if(LIBZIP_DO_INSTALL)
Add targets to the build-tree export set
export(TARGETS zip
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake")installation
install(FILES ${PROJECT_BINARY_DIR}/zipconf.h DESTINATION include)
install(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
install(EXPORT ${PROJECT_NAME}-targets NAMESPACE libzip:: FILE ${PROJECT_NAME}-targets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
endif() -
Many thanks, here is the CMakeLists.txt I am using. It is the current version from https://github.com/nih-at/libzip, where I have added the CMake set commands to set the ZLIB variables.
cmake_minimum_required(VERSION 3.0.2)
#set(ZLIB_LIBRARY "D:/c-repos/zlib-qt/build-zlib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug")
#set(ZLIB_INCLUDE_DIR "D:/c-repos/zlib-qt/build-zlib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug")#set(ZLIB_LIBRARY "D:/ctest")
#set(ZLIB_INCLUDE_DIR "D:/ctest")set(ZLIB_LIBRARY ctest)
set(ZLIB_INCLUDE_DIR ctest)list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if (${CMAKE_VERSION} VERSION_LESS "3.17.0")
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake-compat)
endif()project(libzip
VERSION 1.9.2
LANGUAGES C)option(ENABLE_COMMONCRYPTO "Enable use of CommonCrypto" ON)
option(ENABLE_GNUTLS "Enable use of GnuTLS" ON)
option(ENABLE_MBEDTLS "Enable use of mbed TLS" ON)
option(ENABLE_OPENSSL "Enable use of OpenSSL" ON)
option(ENABLE_WINDOWS_CRYPTO "Enable use of Windows cryptography libraries" ON)option(ENABLE_BZIP2 "Enable use of BZip2" ON)
option(ENABLE_LZMA "Enable use of LZMA" ON)
option(ENABLE_ZSTD "Enable use of Zstandard" ON)option(BUILD_TOOLS "Build tools in the src directory (zipcmp, zipmerge, ziptool)" ON)
option(BUILD_REGRESS "Build regression tests" ON)
option(BUILD_EXAMPLES "Build examples" ON)
option(BUILD_DOC "Build documentation" ON)include(CheckFunctionExists)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckTypeSize)
include(CheckCSourceRuns)
include(CheckCSourceCompiles)
include(CheckStructHasMember)
include(TestBigEndian)
include(GNUInstallDirs)if(ENABLE_COMMONCRYPTO)
check_include_files(CommonCrypto/CommonCrypto.h COMMONCRYPTO_FOUND)
endif()
if(ENABLE_GNUTLS)
find_package(Nettle 3.0)
find_package(GnuTLS)
endif()
if(ENABLE_MBEDTLS)
find_package(MbedTLS 1.0)
endif()
if(ENABLE_OPENSSL)
find_package(OpenSSL)
endif()
if(WIN32)
if(ENABLE_WINDOWS_CRYPTO)
set(WINDOWS_CRYPTO_FOUND TRUE)
endif()
endif()option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(LIBZIP_DO_INSTALL "Install libzip and the related files" ON)option(SHARED_LIB_VERSIONNING "Add SO version in .so build" ON)
find_program(MDOCTOOL NAMES mandoc groff)
if (MDOCTOOL)
set(DOCUMENTATION_FORMAT "mdoc" CACHE STRING "Documentation format")
else()
find_program(MANTOOL NAMES nroff)
if (MANTOOL)
set(DOCUMENTATION_FORMAT "man" CACHE STRING "Documentation format")
else()
set(DOCUMENTATION_FORMAT "html" CACHE STRING "Documentation format")
endif()
endif()include(Dist)
Dist(${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION})#ADD_CUSTOM_TARGET(uninstall
COMMAND cat ${PROJECT_BINARY_DIR}/install_manifest.txt | xargs rm
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
if(BUILD_SHARED_LIBS)
set(HAVE_SHARED TRUE)
else()
set(ZIP_STATIC TRUE)
endif()Checks
check_function_exists(_close HAVE__CLOSE)
check_function_exists(_dup HAVE__DUP)
check_function_exists(_fdopen HAVE__FDOPEN)
check_function_exists(_fileno HAVE__FILENO)
check_function_exists(_setmode HAVE__SETMODE)
check_symbol_exists(_snprintf stdio.h HAVE__SNPRINTF)
check_function_exists(_strdup HAVE__STRDUP)
check_symbol_exists(_stricmp string.h HAVE__STRICMP)
check_function_exists(_strtoi64 HAVE__STRTOI64)
check_function_exists(_strtoui64 HAVE__STRTOUI64)
check_function_exists(_unlink HAVE__UNLINK)
check_function_exists(arc4random HAVE_ARC4RANDOM)
check_function_exists(clonefile HAVE_CLONEFILE)
check_function_exists(explicit_bzero HAVE_EXPLICIT_BZERO)
check_function_exists(explicit_memset HAVE_EXPLICIT_MEMSET)
check_function_exists(fchmod HAVE_FCHMOD)
check_function_exists(fileno HAVE_FILENO)
check_function_exists(fseeko HAVE_FSEEKO)
check_function_exists(ftello HAVE_FTELLO)
check_function_exists(getprogname HAVE_GETPROGNAME)
check_function_exists(localtime_r HAVE_LOCALTIME_R)
check_function_exists(setmode HAVE_SETMODE)
check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF)
check_symbol_exists(strcasecmp strings.h HAVE_STRCASECMP)
check_function_exists(strdup HAVE_STRDUP)
check_function_exists(stricmp HAVE_STRICMP)
check_function_exists(strtoll HAVE_STRTOLL)
check_function_exists(strtoull HAVE_STRTOULL)check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
fts functions may be in external library
if(HAVE_FTS_H)
check_function_exists(fts_open HAVE_FTS_OPEN)
if(NOT HAVE_FTS_OPEN)
check_library_exists(fts fts_open "" HAVE_LIB_FTS)
else(NOT HAVE_FTS_OPEN)
set(HAVE_LIB_FTS "" CACHE INTERNAL "")
endif(NOT HAVE_FTS_OPEN)
else(HAVE_FTS_H)
set(HAVE_LIB_FTS "" CACHE INTERNAL "")
endif(HAVE_FTS_H)if(HAVE_LIB_FTS)
set(FTS_LIB fts CACHE INTERNAL "")
else()
set(FTS_LIB "" CACHE INTERNAL "")
endif()check_include_files(stdbool.h HAVE_STDBOOL_H)
check_include_files(strings.h HAVE_STRINGS_H)
check_include_files(unistd.h HAVE_UNISTD_H)check_include_files(inttypes.h HAVE_INTTYPES_H_LIBZIP)
check_include_files(stdint.h HAVE_STDINT_H_LIBZIP)
check_include_files(sys/types.h HAVE_SYS_TYPES_H_LIBZIP)TODO: fix test
this test does not find __progname even when it exists
#check_symbol_exists(__progname stdlib.h HAVE___PROGNAME)
check_type_size(__int8 __INT8_LIBZIP)
check_type_size(int8_t INT8_T_LIBZIP)
check_type_size(uint8_t UINT8_T_LIBZIP)
check_type_size(__int16 __INT16_LIBZIP)
check_type_size(int16_t INT16_T_LIBZIP)
check_type_size(uint16_t UINT16_T_LIBZIP)
check_type_size(__int32 __INT32_LIBZIP)
check_type_size(int32_t INT32_T_LIBZIP)
check_type_size(uint32_t UINT32_T_LIBZIP)
check_type_size(__int64 __INT64_LIBZIP)
check_type_size(int64_t INT64_T_LIBZIP)
check_type_size(uint64_t UINT64_T_LIBZIP)
check_type_size("short" SHORT_LIBZIP)
check_type_size("int" INT_LIBZIP)
check_type_size("long" LONG_LIBZIP)
check_type_size("long long" LONG_LONG_LIBZIP)
check_type_size("off_t" SIZEOF_OFF_T)
check_type_size("size_t" SIZEOF_SIZE_T)check_c_source_compiles("#include <sys/ioctl.h>
#include <linux/fs.h>
int main(int argc, char *argv[]) { unsigned long x = FICLONERANGE; }" HAVE_FICLONERANGE)check_c_source_compiles("
int foo(char * _Nullable bar);
int main(int argc, char *argv[]) { }" HAVE_NULLABLE)test_big_endian(WORDS_BIGENDIAN)
find_package(ZLIB 1.1.2 REQUIRED)
if(ENABLE_BZIP2)
find_package(BZip2)
if(BZIP2_FOUND)
set(HAVE_LIBBZ2 1)
else()
message(WARNING "-- bzip2 library not found; bzip2 support disabled")
endif(BZIP2_FOUND)
endif(ENABLE_BZIP2)if(ENABLE_LZMA)
find_package(LibLZMA 5.2)
if(LIBLZMA_FOUND)
set(HAVE_LIBLZMA 1)
else()
message(WARNING "-- lzma library not found; lzma/xz support disabled")
endif(LIBLZMA_FOUND)
endif(ENABLE_LZMA)if(ENABLE_ZSTD)
find_package(Zstd 1.3.6)
if(Zstd_FOUND)
set(HAVE_LIBZSTD 1)
else()
message(WARNING "-- zstd library not found; zstandard support disabled")
endif(Zstd_FOUND)
endif(ENABLE_ZSTD)if (COMMONCRYPTO_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_COMMONCRYPTO 1)
elseif (WINDOWS_CRYPTO_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_WINDOWS_CRYPTO 1)
elseif (GNUTLS_FOUND AND NETTLE_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_GNUTLS 1)
elseif (OPENSSL_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_OPENSSL 1)
elseif (MBEDTLS_FOUND)
set(HAVE_CRYPTO 1)
set(HAVE_MBEDTLS 1)
endif()if ((ENABLE_COMMONCRYPTO OR ENABLE_GNUTLS OR ENABLE_MBEDTLS OR ENABLE_OPENSSL OR ENABLE_WINDOWS_CRYPTO) AND NOT HAVE_CRYPTO)
message(WARNING "-- neither Common Crypto, GnuTLS, mbed TLS, OpenSSL, nor Windows Cryptography found; AES support disabled")
endif()if(MSVC)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
add_compile_definitions(_CRT_NONSTDC_NO_DEPRECATE)
endif(MSVC)if(WIN32)
if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
add_compile_definitions(MS_UWP)
endif(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
endif(WIN32)rpath handling: use rpath in installed binaries
if(NOT CMAKE_SYSTEM_NAME MATCHES Linux)
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif()for code completion frameworks
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Testing
ENABLE_TESTING()
Targets
ADD_SUBDIRECTORY(lib)
if(BUILD_DOC)
ADD_SUBDIRECTORY(man)
endif()if(BUILD_TOOLS)
ADD_SUBDIRECTORY(src)
else(BUILD_TOOLS)
if(BUILD_REGRESS)
message(WARNING "-- tools build has been disabled, but they are needed for regression tests; regression testing disabled")
set(BUILD_REGRESS OFF)
endif(BUILD_REGRESS)
endif()include(FindPerl)
if(BUILD_REGRESS AND NOT PERL_FOUND)
message(WARNING "-- perl not found, regression testing disabled")
set(BUILD_REGRESS OFF)
endif()if(BUILD_REGRESS)
add_subdirectory(regress)
endif()if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()pkgconfig file
file(RELATIVE_PATH pc_relative_bindir ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_BINDIR})
set(bindir "${prefix}/${pc_relative_bindir}")
file(RELATIVE_PATH pc_relative_libdir ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_LIBDIR})
set(libdir "${prefix}/${pc_relative_libdir}")
file(RELATIVE_PATH pc_relative_includedir ${CMAKE_INSTALL_PREFIX} ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(includedir "${prefix}/${pc_relative_includedir}")
if(CMAKE_SYSTEM_NAME MATCHES BSD)
set(PKG_CONFIG_RPATH "-Wl,-R${libdir}")
endif(CMAKE_SYSTEM_NAME MATCHES BSD)
get_target_property(LIBS_PRIVATE zip LINK_LIBRARIES)
foreach(LIB ${LIBS_PRIVATE})
if(LIB MATCHES "^/")
get_filename_component(LIB ${LIB} NAME_WE)
string(REGEX REPLACE "^lib" "" LIB ${LIB})
endif()
set(LIBS "${LIBS} -l${LIB}")
endforeach()
string(REGEX REPLACE "-lBZip2::BZip2" "-lbz2" LIBS ${LIBS})
string(REGEX REPLACE "-lLibLZMA::LibLZMA" "-llzma" LIBS ${LIBS})
string(REGEX REPLACE "-lZstd::Zstd" "-lzstd" LIBS ${LIBS})
string(REGEX REPLACE "-lOpenSSL::Crypto" "-lssl -lcrypto" LIBS ${LIBS})
string(REGEX REPLACE "-lZLIB::ZLIB" "-lz" LIBS ${LIBS})
string(REGEX REPLACE "-lGnuTLS::GnuTLS" "-lgnutls" LIBS ${LIBS})
string(REGEX REPLACE "-lNettle::Nettle" "-lnettle" LIBS ${LIBS})
configure_file(libzip.pc.in libzip.pc @ONLY)
if(LIBZIP_DO_INSTALL)
install(FILES ${PROJECT_BINARY_DIR}/libzip.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()fixed size integral types
if(HAVE_INTTYPES_H_LIBZIP)
set(LIBZIP_TYPES_INCLUDE "#if !defined(__STDC_FORMAT_MACROS)
#define __STDC_FORMAT_MACROS 1
#endif
#include <inttypes.h>")
elseif(HAVE_STDINT_H_LIBZIP)
set(LIBZIP_TYPES_INCLUDE "#include <stdint.h>")
elseif(HAVE_SYS_TYPES_H_LIBZIP)
set(LIBZIP_TYPES_INCLUDE "#include <sys/types.h>")
endif()if(HAVE_INT8_T_LIBZIP)
set(ZIP_INT8_T int8_t)
elseif(HAVE___INT8_LIBZIP)
set(ZIP_INT8_T __int8)
else()
set(ZIP_INT8_T "signed char")
endif()if(HAVE_UINT8_T_LIBZIP)
set(ZIP_UINT8_T uint8_t)
elseif(HAVE___INT8_LIBZIP)
set(ZIP_UINT8_T "unsigned __int8")
else()
set(ZIP_UINT8_T "unsigned char")
endif()if(HAVE_INT16_T_LIBZIP)
set(ZIP_INT16_T int16_t)
elseif(HAVE___INT16_LIBZIP)
set(INT16_T_LIBZIP __int16)
elseif(SHORT_LIBZIP EQUAL 2)
set(INT16_T_LIBZIP short)
endif()if(HAVE_UINT16_T_LIBZIP)
set(ZIP_UINT16_T uint16_t)
elseif(HAVE___INT16_LIBZIP)
set(UINT16_T_LIBZIP "unsigned __int16")
elseif(SHORT_LIBZIP EQUAL 2)
set(UINT16_T_LIBZIP "unsigned short")
endif()if(HAVE_INT32_T_LIBZIP)
set(ZIP_INT32_T int32_t)
elseif(HAVE___INT32_LIBZIP)
set(ZIP_INT32_T __int32)
elseif(INT_LIBZIP EQUAL 4)
set(ZIP_INT32_T int)
elseif(LONG_LIBZIP EQUAL 4)
set(ZIP_INT32_T long)
endif()if(HAVE_UINT32_T_LIBZIP)
set(ZIP_UINT32_T uint32_t)
elseif(HAVE___INT32_LIBZIP)
set(ZIP_UINT32_T "unsigned __int32")
elseif(INT_LIBZIP EQUAL 4)
set(ZIP_UINT32_T "unsigned int")
elseif(LONG_LIBZIP EQUAL 4)
set(ZIP_UINT32_T "unsigned long")
endif()if(HAVE_INT64_T_LIBZIP)
set(ZIP_INT64_T int64_t)
elseif(HAVE___INT64_LIBZIP)
set(ZIP_INT64_T __int64)
elseif(LONG_LIBZIP EQUAL 8)
set(ZIP_INT64_T long)
elseif(LONG_LONG_LIBZIP EQUAL 8)
set(ZIP_INT64_T "long long")
endif()if(HAVE_UINT64_T_LIBZIP)
set(ZIP_UINT64_T uint64_t)
elseif(HAVE___INT64_LIBZIP)
set(ZIP_UINT64_T "unsigned __int64")
elseif(LONG_LIBZIP EQUAL 8)
set(ZIP_UINT64_T "unsigned long")
elseif(LONG_LONG_LIBZIP EQUAL 8)
set(ZIP_UINT64_T "unsigned long long")
endif()if(HAVE_NULLABLE)
set(ZIP_NULLABLE_DEFINES)
else()
set(ZIP_NULLABLE_DEFINES "#define _Nullable
#define _Nonnull")
endif()write out config file
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake-config.h.in ${PROJECT_BINARY_DIR}/config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake-zipconf.h.in ${PROJECT_BINARY_DIR}/zipconf.h)for tests
set(srcdir ${CMAKE_CURRENT_SOURCE_DIR}/regress)
set(abs_srcdir ${CMAKE_CURRENT_SOURCE_DIR}/regress)
set(top_builddir ${PROJECT_BINARY_DIR}) # used to find config.hconfigure_file(regress/nihtest.conf.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/nihtest.conf @ONLY)
file(COPY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/nihtest.conf
DESTINATION ${PROJECT_BINARY_DIR}/regress
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)configure_file(regress/runtest.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/runtest @ONLY)
file(COPY ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/runtest
DESTINATION ${PROJECT_BINARY_DIR}/regress
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)create package config file
include(CMakePackageConfigHelpers)
write_basic_package_version_file("${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
COMPATIBILITY AnyNewerVersion)configure_package_config_file("${PROJECT_NAME}-config.cmake.in" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libzip)if(LIBZIP_DO_INSTALL)
Add targets to the build-tree export set
export(TARGETS zip
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake")installation
install(FILES ${PROJECT_BINARY_DIR}/zipconf.h DESTINATION include)
install(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
install(EXPORT ${PROJECT_NAME}-targets NAMESPACE libzip:: FILE ${PROJECT_NAME}-targets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
endif()@Simplexity said in Qt 6.3.1 Cannot Find <directory>: Permission Denied:
This answer on StackOverflow https://stackoverflow.com/questions/46530617/cmake-set-zlib-path says:
Furthermore, ZLIB_LIBRARY needs to point to the library itself. Here is my final build line which works:
cmake -DZLIB_INCLUDE_DIR=d:\mystuff\zlib-1.2.11 -DZLIB_LIBRARY=d:\mystuff\zlib-1.2.11
Can you show us the contents of D:\ctest?
-
@Simplexity said in Qt 6.3.1 Cannot Find <directory>: Permission Denied:
This answer on StackOverflow https://stackoverflow.com/questions/46530617/cmake-set-zlib-path says:
Furthermore, ZLIB_LIBRARY needs to point to the library itself. Here is my final build line which works:
cmake -DZLIB_INCLUDE_DIR=d:\mystuff\zlib-1.2.11 -DZLIB_LIBRARY=d:\mystuff\zlib-1.2.11
Can you show us the contents of D:\ctest?
I think I now have the solution. My problem was:
- Running CMake in project libzip, issues errors that make it look as though the user needs to set path type variables, ZLIB_LIBRARY and ZLIB_LIBRARY_DIR.
- If you set these variables to a path like I did, you then get the errors "cannot find...permission denied"etc.
- The libzip CMake file has , find package ZLIB.
- I didnt notice that findZLIB.cmake is actually a CMake file that is installed in the Qt directories i.e. in my case, not provided by the github clone in my root project!
c:/Qt/Tools/CMake^4/share/cmake-3.23/Modules - FindZLIB.cmake tells you:
Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindZLIBFind the native ZLIB includes and library.
IMPORTED Targets
^^^^^^^^^^^^^^^^.. versionadded:: 3.1
This module defines :prop_tgt:
IMPORTED
targetZLIB::ZLIB
, if
ZLIB has been found.Result Variables
^^^^^^^^^^^^^^^^This module defines the following variables:
::
ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
ZLIB_LIBRARIES - List of libraries when using zlib.
ZLIB_FOUND - True if zlib found.::
ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
ZLIB_VERSION_MAJOR - The major version of zlib
ZLIB_VERSION_MINOR - The minor version of zlib
ZLIB_VERSION_PATCH - The patch version of zlib
ZLIB_VERSION_TWEAK - The tweak version of zlib.. versionadded:: 3.4
Debug and Release variants are found separately.Backward Compatibility
^^^^^^^^^^^^^^^^^^^^^^The following variable are provided for backward compatibility
::
ZLIB_MAJOR_VERSION - The major version of zlib
ZLIB_MINOR_VERSION - The minor version of zlib
ZLIB_PATCH_VERSION - The patch version of zlibHints
^^^^^A user may set
ZLIB_ROOT
to a zlib installation root to tell this
module where to look.- Once you set ZLIB_ROOT to the path where you have the dependencies (.dll and headers) (I set it to D:/ctest) then the CMake parses find and then you can successfully build.