Remove Xcode project in favor of CMake (#4147)

* Compile images into an assets catalog

* Optionally sign resulting Mac bundle

* Move 3rd-party/utility/test targets to their own folders

* Enable ARC via compile options unconditionally

* Install base and localized resources into correct directory

This seems like a Xcode quirk: if subdirectory containing the resource file
matches the destination directory name (and probably if there's more than one
resource file being installed there), the resulting folder structure then
contains an extra subdirectory, i.e. Resources/dirname/dirname/resname.

* Group source files for better structure in IDEs (Xcode, VS)

* Remove Xcode project

Using Xcode is still possible via "Xcode" CMake generator.

* Use ad-hoc signature if one is not specified

* Always use ad-hoc signature on link, leave proper signing to CPack

* Install localized resources into correct directory (QL plugin)

* Don't include CTest (we don't use additional targets it provides)

* Revert "Remove Xcode project"

This reverts commit dc069f654f.
This commit is contained in:
Mike Gelfand 2022-11-12 21:01:57 +01:00 committed by GitHub
parent 55be67b2e6
commit 43acd7e3e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 108 additions and 85 deletions

View File

@ -713,7 +713,6 @@ if(RUN_CLANG_TIDY)
endif() endif()
if(ENABLE_TESTS) if(ENABLE_TESTS)
include(CTest)
enable_testing() enable_testing()
add_subdirectory(tests) add_subdirectory(tests)
endif() endif()
@ -793,6 +792,7 @@ if(GIT_FOUND)
COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh" COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
) )
set_property(TARGET check-format format PROPERTY FOLDER "utility")
endif() endif()
unset(TR_GIT_ROOT) unset(TR_GIT_ROOT)
endif() endif()

View File

@ -117,7 +117,7 @@ macro(tr_add_external_auto_library ID DIRNAME LIBNAME)
BUILD_BYPRODUCTS "${${ID}_LIBRARY}" BUILD_BYPRODUCTS "${${ID}_LIBRARY}"
) )
set_property(TARGET ${${ID}_UPSTREAM_TARGET} PROPERTY FOLDER "ThirdParty") set_property(TARGET ${${ID}_UPSTREAM_TARGET} PROPERTY FOLDER "third-party")
endif() endif()
endmacro() endmacro()

View File

@ -94,6 +94,8 @@ if(ENABLE_NLS)
DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in
VERBATIM VERBATIM
) )
source_group("Generated Files" FILES ${${PROJECT_NAME}_DESKTOP_FILE} ${${PROJECT_NAME}_METAINFO_FILE})
endif() endif()
set(${PROJECT_NAME}_SOURCES set(${PROJECT_NAME}_SOURCES

View File

@ -2,18 +2,14 @@ project(trmac)
include_directories(${CMAKE_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR})
if(CMAKE_GENERATOR STREQUAL "Xcode") add_compile_options(
set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC ON) -fcxx-modules
else() -fmodules
add_definitions(-fobjc-arc) -fobjc-arc)
endif()
add_compile_options(-fmodules -fcxx-modules)
find_program(ACTOOL_EXECUTABLE actool REQUIRED)
find_program(CODESIGN_EXECUTABLE codesign REQUIRED)
find_program(IBTOOL_EXECUTABLE ibtool REQUIRED) find_program(IBTOOL_EXECUTABLE ibtool REQUIRED)
find_program(ICONUTIL_EXECUTABLE iconutil REQUIRED)
find_program(TIFFUTIL_EXECUTABLE tiffutil REQUIRED)
find_program(INSTALL_NAME_TOOL_EXECUTABLE install_name_tool REQUIRED)
macro(tr_wrap_xib IFILE OFILE) macro(tr_wrap_xib IFILE OFILE)
get_filename_component(twx_nib_dir "${OFILE}" DIRECTORY) get_filename_component(twx_nib_dir "${OFILE}" DIRECTORY)
@ -25,20 +21,9 @@ macro(tr_wrap_xib IFILE OFILE)
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
VERBATIM VERBATIM
) )
source_group("Generated Files" FILES ${OFILE})
endmacro() endmacro()
function(tr_tiff_from_pngs OFILE)
get_filename_component(ODIR "${OFILE}" DIRECTORY)
add_custom_command(
OUTPUT ${OFILE}
COMMAND ${CMAKE_COMMAND} -E make_directory ${ODIR}
COMMAND ${TIFFUTIL_EXECUTABLE} -cathidpicheck ${ARGN} -out ${OFILE}
DEPENDS ${ARGN}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
VERBATIM
)
endfunction()
set(${PROJECT_NAME}_SOURCES set(${PROJECT_NAME}_SOURCES
AboutWindowController.mm AboutWindowController.mm
AddMagnetWindowController.mm AddMagnetWindowController.mm
@ -195,51 +180,22 @@ set(${PROJECT_NAME}_XIB_FILES
StatusBar.xib StatusBar.xib
URLSheetWindow.xib URLSheetWindow.xib
) )
source_group(Resources FILES ${${PROJECT_NAME}_XIB_FILES})
set(APPICONSET_DIR "${PROJECT_SOURCE_DIR}/Images/Images.xcassets/AppIcon.appiconset")
set(APPICON_FILE "${PROJECT_BINARY_DIR}/Transmission.icns")
add_custom_command(
OUTPUT "${APPICON_FILE}"
COMMAND "${CMAKE_COMMAND}" -E rm -rf
"${PROJECT_BINARY_DIR}/Transmission.iconset"
COMMAND "${CMAKE_COMMAND}" -E copy_directory
"${APPICONSET_DIR}"
"${PROJECT_BINARY_DIR}/Transmission.iconset"
COMMAND "${CMAKE_COMMAND}" -E rm
"${PROJECT_BINARY_DIR}/Transmission.iconset/Contents.json"
COMMAND "${ICONUTIL_EXECUTABLE}"
--convert icns
--output "${APPICON_FILE}"
"${PROJECT_BINARY_DIR}/Transmission.iconset"
DEPENDS
"${APPICONSET_DIR}/icon_128x128.png"
"${APPICONSET_DIR}/icon_128x128@2x.png"
"${APPICONSET_DIR}/icon_16x16.png"
"${APPICONSET_DIR}/icon_16x16@2x.png"
"${APPICONSET_DIR}/icon_256x256.png"
"${APPICONSET_DIR}/icon_256x256@2x.png"
"${APPICONSET_DIR}/icon_32x32.png"
"${APPICONSET_DIR}/icon_32x32@2x.png"
"${APPICONSET_DIR}/icon_512x512.png"
"${APPICONSET_DIR}/icon_512x512@2x.png"
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
VERBATIM
)
set(${PROJECT_NAME}_RESOURCES set(${PROJECT_NAME}_RESOURCES
Defaults.plist Defaults.plist
Credits.rtf Credits.rtf
sparkle_dsa_pub.pem sparkle_dsa_pub.pem
../COPYING ../COPYING
"${APPICON_FILE}"
Images/TransmissionDocument.icns Images/TransmissionDocument.icns
) )
source_group(Resources FILES ${${PROJECT_NAME}_RESOURCES})
set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources MACOSX_PACKAGE_LOCATION Resources
) )
set(${PROJECT_NAME}_HIDPI_IMAGES set(${PROJECT_NAME}_IMAGESETS
ActionHover ActionHover
Bandwidth Bandwidth
CleanupTemplate CleanupTemplate
@ -247,8 +203,10 @@ set(${PROJECT_NAME}_HIDPI_IMAGES
CreateLarge CreateLarge
DownArrowGroupTemplate DownArrowGroupTemplate
DownArrowTemplate DownArrowTemplate
DownloadBadge
EllipsisTemplate EllipsisTemplate
FavIcon FavIcon
GearshapeTemplate
Globe Globe
Groups Groups
InfoActivity InfoActivity
@ -293,38 +251,58 @@ set(${PROJECT_NAME}_HIDPI_IMAGES
Transfers Transfers
UpArrowGroupTemplate UpArrowGroupTemplate
UpArrowTemplate UpArrowTemplate
UploadBadge
YingYangGroupTemplate YingYangGroupTemplate
YingYangTemplate YingYangTemplate
) )
foreach(IMG ${${PROJECT_NAME}_HIDPI_IMAGES}) set(APPICON_NAME AppIcon)
set(IMG_DIR "Images/Images.xcassets/${IMG}.imageset")
list(APPEND ${PROJECT_NAME}_RESOURCES ${IMG_DIR}/${IMG}.png ${IMG_DIR}/${IMG}@2x.png) set(IMAGE_ASSETS_DIR Images/Images.xcassets)
if(COMBINE_HIDPI_ARTWORK) set(APPICONSET_DIR "${IMAGE_ASSETS_DIR}/${APPICON_NAME}.appiconset")
list(APPEND ${PROJECT_NAME}_RESOURCES ${PROJECT_BINARY_DIR}/Images/${IMG}.tiff)
tr_tiff_from_pngs(${PROJECT_BINARY_DIR}/Images/${IMG}.tiff ${IMG_DIR}/${IMG}.png ${IMG_DIR}/${IMG}@2x.png) set(IMAGE_ASSETS
set_source_files_properties(${PROJECT_BINARY_DIR}/Images/${IMG}.tiff PROPERTIES ${IMAGE_ASSETS_DIR}/Contents.json
MACOSX_PACKAGE_LOCATION Resources ${APPICONSET_DIR}/Contents.json)
)
else() foreach(IMG IN LISTS ${PROJECT_NAME}_IMAGESETS)
set_source_files_properties(${IMG_DIR}/${IMG}.png ${IMG_DIR}/${IMG}@2x.png PROPERTIES set(IMG_DIR "${IMAGE_ASSETS_DIR}/${IMG}.imageset")
MACOSX_PACKAGE_LOCATION Resources list(APPEND IMAGE_ASSETS
) ${IMG_DIR}/${IMG}.png
endif() ${IMG_DIR}/${IMG}@2x.png
${IMG_DIR}/Contents.json)
endforeach() endforeach()
set(${PROJECT_NAME}_LODPI_IMAGES foreach(SIZE IN ITEMS 16 32 128 256 512)
DownloadBadge list(APPEND IMAGE_ASSETS
UploadBadge ${APPICONSET_DIR}/icon_${SIZE}x${SIZE}.png
${APPICONSET_DIR}/icon_${SIZE}x${SIZE}@2x.png)
endforeach()
set(COMPILED_IMAGE_ASSETS
"${CMAKE_CURRENT_BINARY_DIR}/${APPICON_NAME}.icns"
"${CMAKE_CURRENT_BINARY_DIR}/Assets.car")
add_custom_command(
OUTPUT
${COMPILED_IMAGE_ASSETS}
${APPICON_NAME}.Info.plist
COMMAND ${ACTOOL_EXECUTABLE}
--compile "${CMAKE_CURRENT_BINARY_DIR}"
--platform macosx
--minimum-deployment-target ${CMAKE_OSX_DEPLOYMENT_TARGET}
--app-icon ${APPICON_NAME}
--output-partial-info-plist "${CMAKE_CURRENT_BINARY_DIR}/${APPICON_NAME}.Info.plist"
${IMAGE_ASSETS_DIR}
DEPENDS ${IMAGE_ASSETS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
) )
source_group("Generated Files" FILES ${COMPILED_IMAGE_ASSETS} ${APPICON_NAME}.Info.plist)
foreach(IMG ${${PROJECT_NAME}_LODPI_IMAGES}) list(APPEND ${PROJECT_NAME}_RESOURCES ${COMPILED_IMAGE_ASSETS})
set(IMG_DIR "Images/Images.xcassets/${IMG}.imageset")
list(APPEND ${PROJECT_NAME}_RESOURCES ${IMG_DIR}/${IMG}.png) set_source_files_properties(${COMPILED_IMAGE_ASSETS} PROPERTIES
set_source_files_properties(${IMG_DIR}/${IMG}.png PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
MACOSX_PACKAGE_LOCATION Resources
)
endforeach()
set(${PROJECT_NAME}_LINGUAS set(${PROJECT_NAME}_LINGUAS
da da
@ -383,6 +361,7 @@ foreach(F ${${PROJECT_NAME}_LANG_XIB_FILES})
tr_wrap_xib("${F_XIB}" "${F_NIB}") tr_wrap_xib("${F_XIB}" "${F_NIB}")
list(APPEND ${PROJECT_NAME}_BASE_XIB_FILES "${F_XIB}") list(APPEND ${PROJECT_NAME}_BASE_XIB_FILES "${F_XIB}")
list(APPEND ${PROJECT_NAME}_BASE_NIB_FILES "${F_NIB}") list(APPEND ${PROJECT_NAME}_BASE_NIB_FILES "${F_NIB}")
source_group(Resources/Base.lproj FILES ${F_XIB})
endforeach() endforeach()
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
@ -396,6 +375,7 @@ foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES}) foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES})
list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F}) list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F})
endforeach() endforeach()
source_group(Resources/${LANG}.lproj FILES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
endforeach() endforeach()
include_directories( include_directories(
@ -414,13 +394,23 @@ add_library(vdkqueue STATIC
VDKQueue/VDKQueue.h VDKQueue/VDKQueue.h
) )
set_property(TARGET vdkqueue PROPERTY FOLDER "third-party")
set(BASE_NIB_FILES_RESOURCES_DIR Resources)
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
string(APPEND BASE_NIB_FILES_RESOURCES_DIR /Base.lproj)
endif()
set_source_files_properties(${${PROJECT_NAME}_BASE_NIB_FILES} PROPERTIES set_source_files_properties(${${PROJECT_NAME}_BASE_NIB_FILES} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources/Base.lproj) MACOSX_PACKAGE_LOCATION ${BASE_NIB_FILES_RESOURCES_DIR})
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES}) list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
set(STRINGS_FILES_RESOURCES_DIR Resources)
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj)
endif()
set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj) MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR})
endforeach() endforeach()
add_executable(${TR_NAME}-mac MACOSX_BUNDLE add_executable(${TR_NAME}-mac MACOSX_BUNDLE
@ -447,6 +437,11 @@ target_link_libraries(${TR_NAME}-mac
"-framework Security" "-framework Security"
) )
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
add_custom_command(TARGET ${TR_NAME}-mac POST_BUILD
COMMAND ${CODESIGN_EXECUTABLE} -s - -o linker-signed $<TARGET_BUNDLE_DIR:${TR_NAME}-mac>)
endif()
set(MAC_BUNDLE_NAME Transmission) set(MAC_BUNDLE_NAME Transmission)
set_target_properties(${TR_NAME}-mac PROPERTIES set_target_properties(${TR_NAME}-mac PROPERTIES

View File

@ -34,7 +34,9 @@
<key>CFBundleHelpBookName</key> <key>CFBundleHelpBookName</key>
<string>Transmission Help</string> <string>Transmission Help</string>
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string>Transmission</string> <string>@APPICON_NAME@</string>
<key>CFBundleIconName</key>
<string>@APPICON_NAME@</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>org.m0k.transmission</string> <string>org.m0k.transmission</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>

View File

@ -36,18 +36,24 @@ set(${PROJECT_NAME}_LANG_STRINGS_FILES
set(${PROJECT_NAME}_RESOURCES set(${PROJECT_NAME}_RESOURCES
style.css style.css
) )
source_group(Resources FILES ${${PROJECT_NAME}_RESOURCES})
set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources) MACOSX_PACKAGE_LOCATION Resources)
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
set(${PROJECT_NAME}_${LANG}_STRINGS_FILES) set(${PROJECT_NAME}_${LANG}_STRINGS_FILES)
set(STRINGS_FILES_RESOURCES_DIR Resources)
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj)
endif()
foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES}) foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES})
list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F}) list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F})
list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES}) list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj) MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR})
endforeach() endforeach()
source_group(Resources/${LANG}.lproj FILES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
endforeach() endforeach()
add_library(${TR_NAME}-mac-ql MODULE add_library(${TR_NAME}-mac-ql MODULE

View File

@ -1,5 +1,10 @@
project(trqt) project(trqt)
set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP "Generated Files")
set_property(GLOBAL PROPERTY AUTOMOC_SOURCE_GROUP "Generated Files")
set_property(GLOBAL PROPERTY AUTORCC_SOURCE_GROUP "Generated Files")
set_property(GLOBAL PROPERTY AUTOUIC_SOURCE_GROUP "Generated Files")
set(${PROJECT_NAME}_SOURCES set(${PROJECT_NAME}_SOURCES
AboutDialog.cc AboutDialog.cc
AddData.cc AddData.cc
@ -120,7 +125,7 @@ set(${PROJECT_NAME}_HEADERS
WatchDir.h WatchDir.h
) )
tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES set(${PROJECT_NAME}_UI_FILES
AboutDialog.ui AboutDialog.ui
DetailsDialog.ui DetailsDialog.ui
LicenseDialog.ui LicenseDialog.ui
@ -134,13 +139,19 @@ tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES
StatsDialog.ui StatsDialog.ui
TrackersDialog.ui TrackersDialog.ui
) )
source_group(Ui FILES ${${PROJECT_NAME}_UI_FILES})
tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES ${${PROJECT_NAME}_UI_FILES})
source_group("Generated Files" FILES ${${PROJECT_NAME}_UI_SOURCES})
set(${PROJECT_NAME}_QRC_FILES application.qrc) set(${PROJECT_NAME}_QRC_FILES application.qrc)
if(WIN32 OR APPLE) if(WIN32 OR APPLE)
list(APPEND ${PROJECT_NAME}_QRC_FILES icons/Faenza/Faenza.qrc) list(APPEND ${PROJECT_NAME}_QRC_FILES icons/Faenza/Faenza.qrc)
endif() endif()
source_group(Resources FILES ${${PROJECT_NAME}_QRC_FILES})
tr_qt_add_resources(${PROJECT_NAME}_QRC_SOURCES ${${PROJECT_NAME}_QRC_FILES}) tr_qt_add_resources(${PROJECT_NAME}_QRC_SOURCES ${${PROJECT_NAME}_QRC_FILES})
source_group("Generated Files" FILES ${${PROJECT_NAME}_QRC_SOURCES})
set(${PROJECT_NAME}_LINGUAS set(${PROJECT_NAME}_LINGUAS
af af
@ -188,6 +199,7 @@ endforeach()
if(${PROJECT_NAME}_TS_FILES) if(${PROJECT_NAME}_TS_FILES)
tr_qt_add_translation(${PROJECT_NAME}_QM_FILES ${${PROJECT_NAME}_TS_FILES}) tr_qt_add_translation(${PROJECT_NAME}_QM_FILES ${${PROJECT_NAME}_TS_FILES})
source_group("Generated Files" FILES ${${PROJECT_NAME}_QM_FILES})
endif() endif()
include_directories( include_directories(

View File

@ -1,3 +1,5 @@
add_library(gtestall STATIC add_library(gtestall STATIC
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest_main.cc) ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest_main.cc)
set_property(TARGET gtestall PROPERTY FOLDER "third-party")

View File

@ -51,6 +51,8 @@ add_executable(libtransmission-test
watchdir-test.cc watchdir-test.cc
web-utils-test.cc) web-utils-test.cc)
set_property(TARGET libtransmission-test PROPERTY FOLDER "tests")
target_compile_definitions(libtransmission-test target_compile_definitions(libtransmission-test
PRIVATE PRIVATE
-DLIBTRANSMISSION_TEST_ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/assets" -DLIBTRANSMISSION_TEST_ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/assets"
@ -94,6 +96,8 @@ add_custom_command(
add_executable(subprocess-test add_executable(subprocess-test
subprocess-test-program.cc) subprocess-test-program.cc)
set_property(TARGET subprocess-test PROPERTY FOLDER "tests")
target_include_directories(subprocess-test target_include_directories(subprocess-test
PRIVATE PRIVATE
${CMAKE_SOURCE_DIR}/libtransmission) ${CMAKE_SOURCE_DIR}/libtransmission)