set(MAIN_CXX_PROGRAMS qpdf fix-qdf pdf_from_scratch sizes test_driver test_large_file test_parsedoffset test_pdf_doc_encoding test_pdf_unicode test_renumber test_shell_glob test_tokenizer test_unicode_filenames test_xref) set(MAIN_C_PROGRAMS qpdf-ctest qpdfjob-ctest) foreach(PROG ${MAIN_CXX_PROGRAMS}) add_executable(${PROG} ${PROG}.cc) target_link_libraries(${PROG} libqpdf) endforeach() foreach(PROG ${MAIN_C_PROGRAMS}) add_executable(${PROG} ${PROG}.c) target_link_libraries(${PROG} libqpdf) set_property(TARGET ${PROG} PROPERTY LINKER_LANGUAGE CXX) endforeach() target_include_directories(qpdf-ctest PRIVATE ${CMAKE_BINARY_DIR}/libqpdf) target_include_directories(sizes PRIVATE ${JPEG_INCLUDE}) set(needs_private_headers test_large_file test_driver qpdf-ctest qpdfjob-ctest ) foreach(TARGET ${needs_private_headers}) target_include_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/libqpdf) endforeach() foreach(B qpdf test_unicode_filenames fix-qdf test_shell_glob) if(WINDOWS_WMAIN_COMPILE) target_compile_options(${B} PRIVATE ${WINDOWS_WMAIN_COMPILE}) endif() if(WINDOWS_WMAIN_LINK) target_link_options(${B} PRIVATE ${WINDOWS_WMAIN_LINK}) endif() endforeach() add_test( NAME qpdf COMMAND ${RUN_QTEST} --top ${qpdf_SOURCE_DIR} --bin $ --bin $ # for Windows to find DLL --code ${qpdf_SOURCE_DIR}/qpdf --color ${QTEST_COLOR} --show-on-failure ${SHOW_FAILED_TEST_OUTPUT} --tc "${qpdf_SOURCE_DIR}/qpdf/*.cc" --tc "${qpdf_SOURCE_DIR}/qpdf/*.c" --tc "${qpdf_SOURCE_DIR}/libqpdf/*.cc") install(TARGETS qpdf fix-qdf TYPE RUNTIME COMPONENT ${COMPONENT_CLI}) if(MINGW) # For MSVC, including InstallRequiredSystemLibraries in the # top-level CMakeLists.txt is sufficient. For mingw, we have to copy # mingw libraries in ourselves. set(ONE_GNU_DLL extra-dlls/libstdc++-6.dll) add_custom_command(OUTPUT ${ONE_GNU_DLL} COMMAND perl ${qpdf_SOURCE_DIR}/copy_dlls qpdf.exe ${CMAKE_BINARY_DIR}/libqpdf extra-dlls) add_custom_target(extra_dlls ALL DEPENDS ${ONE_GNU_DLL}) add_dependencies(extra_dlls qpdf) if(BUILD_SHARED_LIBS) set(EXTRA_DLL_COMPONENT ${COMPONENT_LIB}) else() set(EXTRA_DLL_COMPONENT ${COMPONENT_CLI}) endif() # The trailing / prevents "extra-dlls" from being created in bin. install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/extra-dlls/ TYPE BIN COMPONENT ${EXTRA_DLL_COMPONENT}) endif()