Explorar o código

Merge pull request #84 from lioncash/cmake

CMakeLists: Derive the source directory grouping from targets themselves
bunnei %!s(int64=8) %!d(string=hai) anos
pai
achega
be0e14ab3e

+ 4 - 2
CMakeLists.txt

@@ -323,12 +323,14 @@ endif()
 # This function should be passed a list of all files in a target. It will automatically generate
 # file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
 # one in the filesystem.
-function(create_directory_groups)
+function(create_target_directory_groups target_name)
     # Place any files that aren't in the source list in a separate group so that they don't get in
     # the way.
     source_group("Other Files" REGULAR_EXPRESSION ".")
 
-    foreach(file_name ${ARGV})
+    get_target_property(target_sources "${target_name}" SOURCES)
+
+    foreach(file_name IN LISTS target_sources)
         get_filename_component(dir_name "${file_name}" PATH)
         # Group names use '\' as a separator even though the entire rest of CMake uses '/'...
         string(REPLACE "/" "\\" group_name "${dir_name}")

+ 6 - 8
externals/getopt/CMakeLists.txt

@@ -1,11 +1,9 @@
-set(SRCS
-            getopt.c
-            )
-set(HEADERS
-            getopt.h
-            )
+add_library(getopt
+    getopt.c
+    getopt.h
+)
+
+create_target_directory_groups(getopt)
 
-create_directory_groups(${SRCS} ${HEADERS})
-add_library(getopt ${SRCS} ${HEADERS})
 target_compile_definitions(getopt PUBLIC STATIC_GETOPT)
 target_include_directories(getopt INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

+ 6 - 9
externals/glad/CMakeLists.txt

@@ -1,13 +1,10 @@
-set(SRCS
-            src/glad.c
-            )
-set(HEADERS
-            include/KHR/khrplatform.h
-            include/glad/glad.h
-            )
+add_library(glad STATIC
+    src/glad.c
+    include/KHR/khrplatform.h
+    include/glad/glad.h
+)
 
-create_directory_groups(${SRCS} ${HEADERS})
-add_library(glad STATIC ${SRCS} ${HEADERS})
+create_target_directory_groups(glad)
 target_include_directories(glad PUBLIC "include/")
 
 if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")

+ 7 - 10
externals/inih/CMakeLists.txt

@@ -1,12 +1,9 @@
-set(SRCS
-            inih/ini.c
-            inih/cpp/INIReader.cpp
-            )
-set(HEADERS
-            inih/ini.h
-            inih/cpp/INIReader.h
-            )
+add_library(inih
+    inih/ini.c
+    inih/ini.h
+    inih/cpp/INIReader.cpp
+    inih/cpp/INIReader.h
+)
 
-create_directory_groups(${SRCS} ${HEADERS})
-add_library(inih ${SRCS} ${HEADERS})
+create_target_directory_groups(inih)
 target_include_directories(inih INTERFACE .)

+ 57 - 63
src/common/CMakeLists.txt

@@ -24,78 +24,72 @@ if ($ENV{CI})
 endif()
 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scm_rev.cpp.in" "${CMAKE_CURRENT_SOURCE_DIR}/scm_rev.cpp" @ONLY)
 
-set(SRCS
-            break_points.cpp
-            file_util.cpp
-            hash.cpp
-            logging/filter.cpp
-            logging/text_formatter.cpp
-            logging/backend.cpp
-            memory_util.cpp
-            microprofile.cpp
-            misc.cpp
-            param_package.cpp
-            scm_rev.cpp
-            string_util.cpp
-            telemetry.cpp
-            thread.cpp
-            timer.cpp
-            )
-
-set(HEADERS
-            alignment.h
-            assert.h
-            bit_field.h
-            bit_set.h
-            break_points.h
-            chunk_file.h
-            code_block.h
-            color.h
-            common_funcs.h
-            common_paths.h
-            common_types.h
-            file_util.h
-            hash.h
-            linear_disk_cache.h
-            logging/text_formatter.h
-            logging/filter.h
-            logging/log.h
-            logging/backend.h
-            math_util.h
-            memory_util.h
-            microprofile.h
-            microprofileui.h
-            param_package.h
-            platform.h
-            quaternion.h
-            scm_rev.h
-            scope_exit.h
-            string_util.h
-            swap.h
-            synchronized_wrapper.h
-            telemetry.h
-            thread.h
-            thread_queue_list.h
-            threadsafe_queue.h
-            timer.h
-            vector_math.h
-            )
+add_library(common STATIC
+    alignment.h
+    assert.h
+    bit_field.h
+    bit_set.h
+    break_points.cpp
+    break_points.h
+    chunk_file.h
+    code_block.h
+    color.h
+    common_funcs.h
+    common_paths.h
+    common_types.h
+    file_util.cpp
+    file_util.h
+    hash.cpp
+    hash.h
+    linear_disk_cache.h
+    logging/backend.cpp
+    logging/backend.h
+    logging/filter.cpp
+    logging/filter.h
+    logging/log.h
+    logging/text_formatter.cpp
+    logging/text_formatter.h
+    math_util.h
+    memory_util.cpp
+    memory_util.h
+    microprofile.cpp
+    microprofile.h
+    microprofileui.h
+    misc.cpp
+    param_package.cpp
+    param_package.h
+    platform.h
+    quaternion.h
+    scm_rev.cpp
+    scm_rev.h
+    scope_exit.h
+    string_util.cpp
+    string_util.h
+    swap.h
+    synchronized_wrapper.h
+    telemetry.cpp
+    telemetry.h
+    thread.cpp
+    thread.h
+    thread_queue_list.h
+    threadsafe_queue.h
+    timer.cpp
+    timer.h
+    vector_math.h
+)
 
 if(ARCHITECTURE_x86_64)
-    set(SRCS ${SRCS}
+    target_sources(common
+        PRIVATE
             x64/cpu_detect.cpp
-            )
-
-    set(HEADERS ${HEADERS}
             x64/cpu_detect.h
             x64/xbyak_abi.h
             x64/xbyak_util.h
-            )
+    )
 endif()
 
-create_directory_groups(${SRCS} ${HEADERS})
+create_target_directory_groups(common)
 
-add_library(common STATIC ${SRCS} ${HEADERS})
 target_link_libraries(common PUBLIC Boost::boost microprofile)
 if (ARCHITECTURE_x86_64)
     target_link_libraries(common PRIVATE xbyak)

+ 167 - 170
src/core/CMakeLists.txt

@@ -1,174 +1,171 @@
-set(SRCS
-            arm/dynarmic/arm_dynarmic.cpp
-            arm/unicorn/arm_unicorn.cpp
-            core.cpp
-            core_timing.cpp
-            file_sys/archive_backend.cpp
-            file_sys/disk_archive.cpp
-            file_sys/ivfc_archive.cpp
-            file_sys/path_parser.cpp
-            file_sys/savedata_archive.cpp
-            file_sys/title_metadata.cpp
-            frontend/emu_window.cpp
-            frontend/framebuffer_layout.cpp
-            gdbstub/gdbstub.cpp
-            hle/config_mem.cpp
-            hle/kernel/address_arbiter.cpp
-            hle/kernel/client_port.cpp
-            hle/kernel/client_session.cpp
-            hle/kernel/condition_variable.cpp
-            hle/kernel/domain.cpp
-            hle/kernel/event.cpp
-            hle/kernel/handle_table.cpp
-            hle/kernel/hle_ipc.cpp
-            hle/kernel/kernel.cpp
-            hle/kernel/memory.cpp
-            hle/kernel/mutex.cpp
-            hle/kernel/object_address_table.cpp
-            hle/kernel/process.cpp
-            hle/kernel/resource_limit.cpp
-            hle/kernel/server_port.cpp
-            hle/kernel/server_session.cpp
-            hle/kernel/shared_memory.cpp
-            hle/kernel/svc.cpp
-            hle/kernel/thread.cpp
-            hle/kernel/timer.cpp
-            hle/kernel/vm_manager.cpp
-            hle/kernel/wait_object.cpp
-            hle/lock.cpp
-            hle/romfs.cpp
-            hle/service/acc/acc.cpp
-            hle/service/acc/acc_u0.cpp
-            hle/service/am/am.cpp
-            hle/service/am/applet_oe.cpp
-            hle/service/aoc/aoc_u.cpp
-            hle/service/apm/apm.cpp
-            hle/service/audio/audio.cpp
-            hle/service/audio/audout_u.cpp
-            hle/service/hid/hid.cpp
-            hle/service/lm/lm.cpp
-            hle/service/nvdrv/devices/nvdisp_disp0.cpp
-            hle/service/nvdrv/devices/nvhost_as_gpu.cpp
-            hle/service/nvdrv/devices/nvmap.cpp
-            hle/service/nvdrv/interface.cpp
-            hle/service/nvdrv/nvdrv.cpp
-            hle/service/pctl/pctl.cpp
-            hle/service/pctl/pctl_a.cpp
-            hle/service/service.cpp
-            hle/service/sm/controller.cpp
-            hle/service/sm/sm.cpp
-            hle/service/time/time.cpp
-            hle/service/vi/vi.cpp
-            hle/service/vi/vi_m.cpp
-            hle/shared_page.cpp
-            hw/hw.cpp
-            hw/lcd.cpp
-            loader/elf.cpp
-            loader/linker.cpp
-            loader/loader.cpp
-            loader/nro.cpp
-            loader/nso.cpp
-            tracer/recorder.cpp
-            memory.cpp
-            perf_stats.cpp
-            settings.cpp
-            telemetry_session.cpp
-            )
+add_library(core STATIC
+    arm/arm_interface.h
+    arm/dynarmic/arm_dynarmic.cpp
+    arm/dynarmic/arm_dynarmic.h
+    arm/unicorn/arm_unicorn.cpp
+    arm/unicorn/arm_unicorn.h
+    core.cpp
+    core.h
+    core_timing.cpp
+    core_timing.h
+    file_sys/archive_backend.cpp
+    file_sys/archive_backend.h
+    file_sys/directory_backend.h
+    file_sys/disk_archive.cpp
+    file_sys/disk_archive.h
+    file_sys/errors.h
+    file_sys/file_backend.h
+    file_sys/ivfc_archive.cpp
+    file_sys/ivfc_archive.h
+    file_sys/path_parser.cpp
+    file_sys/path_parser.h
+    file_sys/savedata_archive.cpp
+    file_sys/savedata_archive.h
+    file_sys/title_metadata.cpp
+    file_sys/title_metadata.h
+    frontend/emu_window.cpp
+    frontend/emu_window.h
+    frontend/framebuffer_layout.cpp
+    frontend/framebuffer_layout.h
+    frontend/input.h
+    gdbstub/gdbstub.cpp
+    gdbstub/gdbstub.h
+    hle/config_mem.cpp
+    hle/config_mem.h
+    hle/ipc.h
+    hle/ipc_helpers.h
+    hle/kernel/address_arbiter.cpp
+    hle/kernel/address_arbiter.h
+    hle/kernel/client_port.cpp
+    hle/kernel/client_port.h
+    hle/kernel/client_session.cpp
+    hle/kernel/client_session.h
+    hle/kernel/condition_variable.cpp
+    hle/kernel/condition_variable.h
+    hle/kernel/domain.cpp
+    hle/kernel/domain.h
+    hle/kernel/errors.h
+    hle/kernel/event.cpp
+    hle/kernel/event.h
+    hle/kernel/handle_table.cpp
+    hle/kernel/handle_table.h
+    hle/kernel/hle_ipc.cpp
+    hle/kernel/hle_ipc.h
+    hle/kernel/kernel.cpp
+    hle/kernel/kernel.h
+    hle/kernel/memory.cpp
+    hle/kernel/memory.h
+    hle/kernel/mutex.cpp
+    hle/kernel/mutex.h
+    hle/kernel/object_address_table.cpp
+    hle/kernel/object_address_table.h
+    hle/kernel/process.cpp
+    hle/kernel/process.h
+    hle/kernel/resource_limit.cpp
+    hle/kernel/resource_limit.h
+    hle/kernel/server_port.cpp
+    hle/kernel/server_port.h
+    hle/kernel/server_session.cpp
+    hle/kernel/server_session.h
+    hle/kernel/session.h
+    hle/kernel/shared_memory.cpp
+    hle/kernel/shared_memory.h
+    hle/kernel/svc.cpp
+    hle/kernel/svc.h
+    hle/kernel/svc_wrap.h
+    hle/kernel/sync_object.h
+    hle/kernel/thread.cpp
+    hle/kernel/thread.h
+    hle/kernel/timer.cpp
+    hle/kernel/timer.h
+    hle/kernel/vm_manager.cpp
+    hle/kernel/vm_manager.h
+    hle/kernel/wait_object.cpp
+    hle/kernel/wait_object.h
+    hle/lock.cpp
+    hle/lock.h
+    hle/result.h
+    hle/romfs.cpp
+    hle/romfs.h
+    hle/service/acc/acc.cpp
+    hle/service/acc/acc.h
+    hle/service/acc/acc_u0.cpp
+    hle/service/acc/acc_u0.h
+    hle/service/am/am.cpp
+    hle/service/am/am.h
+    hle/service/am/applet_oe.cpp
+    hle/service/am/applet_oe.h
+    hle/service/aoc/aoc_u.cpp
+    hle/service/aoc/aoc_u.h
+    hle/service/apm/apm.cpp
+    hle/service/apm/apm.h
+    hle/service/audio/audio.cpp
+    hle/service/audio/audio.h
+    hle/service/audio/audout_u.cpp
+    hle/service/audio/audout_u.h
+    hle/service/hid/hid.cpp
+    hle/service/hid/hid.h
+    hle/service/lm/lm.cpp
+    hle/service/lm/lm.h
+    hle/service/nvdrv/devices/nvdevice.h
+    hle/service/nvdrv/devices/nvdisp_disp0.cpp
+    hle/service/nvdrv/devices/nvdisp_disp0.h
+    hle/service/nvdrv/devices/nvhost_as_gpu.cpp
+    hle/service/nvdrv/devices/nvhost_as_gpu.h
+    hle/service/nvdrv/devices/nvmap.cpp
+    hle/service/nvdrv/devices/nvmap.h
+    hle/service/nvdrv/interface.cpp
+    hle/service/nvdrv/interface.h
+    hle/service/nvdrv/nvdrv.cpp
+    hle/service/nvdrv/nvdrv.h
+    hle/service/pctl/pctl.cpp
+    hle/service/pctl/pctl.h
+    hle/service/pctl/pctl_a.cpp
+    hle/service/pctl/pctl_a.h
+    hle/service/service.cpp
+    hle/service/service.h
+    hle/service/sm/controller.cpp
+    hle/service/sm/controller.h
+    hle/service/sm/sm.cpp
+    hle/service/sm/sm.h
+    hle/service/time/time.cpp
+    hle/service/time/time.h
+    hle/service/vi/vi.cpp
+    hle/service/vi/vi.h
+    hle/service/vi/vi_m.cpp
+    hle/service/vi/vi_m.h
+    hle/shared_page.cpp
+    hle/shared_page.h
+    hw/hw.cpp
+    hw/hw.h
+    hw/lcd.cpp
+    hw/lcd.h
+    loader/elf.cpp
+    loader/elf.h
+    loader/linker.cpp
+    loader/linker.h
+    loader/loader.cpp
+    loader/loader.h
+    loader/nro.cpp
+    loader/nro.h
+    loader/nso.cpp
+    loader/nso.h
+    memory.cpp
+    memory.h
+    memory_setup.h
+    mmio.h
+    perf_stats.cpp
+    perf_stats.h
+    settings.cpp
+    settings.h
+    telemetry_session.cpp
+    telemetry_session.h
+    tracer/citrace.h
+    tracer/recorder.cpp
+    tracer/recorder.h
+)
 
-set(HEADERS
-            arm/arm_interface.h
-            arm/dynarmic/arm_dynarmic.h
-            arm/unicorn/arm_unicorn.h
-            core.h
-            core_timing.h
-            file_sys/archive_backend.h
-            file_sys/directory_backend.h
-            file_sys/disk_archive.h
-            file_sys/errors.h
-            file_sys/file_backend.h
-            file_sys/ivfc_archive.h
-            file_sys/path_parser.h
-            file_sys/savedata_archive.h
-            file_sys/title_metadata.h
-            frontend/emu_window.h
-            frontend/framebuffer_layout.h
-            frontend/input.h
-            gdbstub/gdbstub.h
-            hle/config_mem.h
-            hle/ipc.h
-            hle/ipc_helpers.h
-            hle/kernel/address_arbiter.h
-            hle/kernel/client_port.h
-            hle/kernel/client_session.h
-            hle/kernel/condition_variable.h
-            hle/kernel/domain.h
-            hle/kernel/errors.h
-            hle/kernel/event.h
-            hle/kernel/handle_table.h
-            hle/kernel/hle_ipc.h
-            hle/kernel/kernel.h
-            hle/kernel/memory.h
-            hle/kernel/mutex.h
-            hle/kernel/object_address_table.h
-            hle/kernel/process.h
-            hle/kernel/resource_limit.h
-            hle/kernel/server_port.h
-            hle/kernel/server_session.h
-            hle/kernel/session.h
-            hle/kernel/shared_memory.h
-            hle/kernel/sync_object.h
-            hle/kernel/svc.h
-            hle/kernel/svc_wrap.h
-            hle/kernel/thread.h
-            hle/kernel/timer.h
-            hle/kernel/vm_manager.h
-            hle/kernel/wait_object.h
-            hle/lock.h
-            hle/result.h
-            hle/romfs.h
-            hle/service/acc/acc.h
-            hle/service/acc/acc_u0.h
-            hle/service/am/am.h
-            hle/service/am/applet_oe.h
-            hle/service/aoc/aoc_u.h
-            hle/service/apm/apm.h
-            hle/service/audio/audio.h
-            hle/service/audio/audout_u.h
-            hle/service/hid/hid.h
-            hle/service/lm/lm.h
-            hle/service/nvdrv/devices/nvdevice.h
-            hle/service/nvdrv/devices/nvdisp_disp0.h
-            hle/service/nvdrv/devices/nvhost_as_gpu.h
-            hle/service/nvdrv/devices/nvmap.h
-            hle/service/nvdrv/interface.h
-            hle/service/nvdrv/nvdrv.h
-            hle/service/pctl/pctl.h
-            hle/service/pctl/pctl_a.h
-            hle/service/service.h
-            hle/service/sm/controller.h
-            hle/service/sm/sm.h
-            hle/service/time/time.h
-            hle/service/vi/vi.h
-            hle/service/vi/vi_m.h
-            hle/shared_page.h
-            hw/hw.h
-            hw/lcd.h
-            loader/elf.h
-            loader/linker.h
-            loader/loader.h
-            loader/nro.h
-            loader/nso.h
-            tracer/recorder.h
-            tracer/citrace.h
-            memory.h
-            memory_setup.h
-            mmio.h
-            perf_stats.h
-            settings.h
-            telemetry_session.h
-            )
+create_target_directory_groups(core)
 
-create_directory_groups(${SRCS} ${HEADERS})
-add_library(core STATIC ${SRCS} ${HEADERS})
 target_link_libraries(core PUBLIC common PRIVATE dynarmic video_core)
 target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt lz4_static unicorn)

+ 12 - 19
src/input_common/CMakeLists.txt

@@ -1,25 +1,18 @@
-set(SRCS
-            analog_from_button.cpp
-            keyboard.cpp
-            main.cpp
-            motion_emu.cpp
-            )
+add_library(input_common STATIC
+    analog_from_button.cpp
+    analog_from_button.h
+    keyboard.cpp
+    keyboard.h
+    main.cpp
+    main.h
+    motion_emu.cpp
+    motion_emu.h
 
-set(HEADERS
-            analog_from_button.h
-            keyboard.h
-            main.h
-            motion_emu.h
-            )
+    $<$<BOOL:${SDL2_FOUND}>:sdl/sdl.cpp sdl/sdl.h>
+)
 
-if(SDL2_FOUND)
-    set(SRCS ${SRCS} sdl/sdl.cpp)
-    set(HEADERS ${HEADERS} sdl/sdl.h)
-endif()
-
-create_directory_groups(${SRCS} ${HEADERS})
+create_target_directory_groups(input_common)
 
-add_library(input_common STATIC ${SRCS} ${HEADERS})
 target_link_libraries(input_common PUBLIC core PRIVATE common)
 
 if(SDL2_FOUND)

+ 11 - 15
src/tests/CMakeLists.txt

@@ -1,20 +1,16 @@
-set(SRCS
-            common/param_package.cpp
-            core/arm/arm_test_common.cpp
-            core/core_timing.cpp
-            core/file_sys/path_parser.cpp
-            core/memory/memory.cpp
-            glad.cpp
-            tests.cpp
-            )
+add_executable(tests
+    common/param_package.cpp
+    core/arm/arm_test_common.cpp
+    core/arm/arm_test_common.h
+    core/core_timing.cpp
+    core/file_sys/path_parser.cpp
+    core/memory/memory.cpp
+    glad.cpp
+    tests.cpp
+)
 
-set(HEADERS
-            core/arm/arm_test_common.h
-            )
+create_target_directory_groups(tests)
 
-create_directory_groups(${SRCS} ${HEADERS})
-
-add_executable(tests ${SRCS} ${HEADERS})
 target_link_libraries(tests PRIVATE common core)
 target_link_libraries(tests PRIVATE glad) # To support linker work-around
 target_link_libraries(tests PRIVATE ${PLATFORM_LIBRARIES} catch-single-include Threads::Threads)

+ 15 - 19
src/video_core/CMakeLists.txt

@@ -1,23 +1,19 @@
-set(SRCS
-            renderer_base.cpp
-            renderer_opengl/gl_shader_util.cpp
-            renderer_opengl/gl_state.cpp
-            renderer_opengl/renderer_opengl.cpp
-            video_core.cpp
-            )
+add_library(video_core STATIC
+    renderer_base.cpp
+    renderer_base.h
+    renderer_opengl/gl_resource_manager.h
+    renderer_opengl/gl_shader_util.cpp
+    renderer_opengl/gl_shader_util.h
+    renderer_opengl/gl_state.cpp
+    renderer_opengl/gl_state.h
+    renderer_opengl/renderer_opengl.cpp
+    renderer_opengl/renderer_opengl.h
+    utils.h
+    video_core.cpp
+    video_core.h
+)
 
-set(HEADERS
-            renderer_base.h
-            renderer_opengl/gl_resource_manager.h
-            renderer_opengl/gl_shader_util.h
-            renderer_opengl/gl_state.h
-            renderer_opengl/renderer_opengl.h
-            utils.h
-            video_core.h
-            )
+create_target_directory_groups(video_core)
 
-create_directory_groups(${SRCS} ${HEADERS})
-
-add_library(video_core STATIC ${SRCS} ${HEADERS})
 target_link_libraries(video_core PUBLIC common core)
 target_link_libraries(video_core PRIVATE glad)

+ 65 - 60
src/yuzu/CMakeLists.txt

@@ -3,79 +3,84 @@ set(CMAKE_AUTORCC ON)
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
 
-set(SRCS
-            about_dialog.cpp
-            configuration/config.cpp
-            configuration/configure_debug.cpp
-            configuration/configure_dialog.cpp
-            configuration/configure_general.cpp
-            configuration/configure_graphics.cpp
-            configuration/configure_input.cpp
-            configuration/configure_system.cpp
-            debugger/profiler.cpp
-            debugger/registers.cpp
-            debugger/wait_tree.cpp
-            util/spinbox.cpp
-            util/util.cpp
-            bootmanager.cpp
-            game_list.cpp
-            hotkeys.cpp
-            main.cpp
-            ui_settings.cpp
-            yuzu.rc
-            Info.plist
-            )
-
-set(HEADERS
-            about_dialog.h
-            configuration/config.h
-            configuration/configure_debug.h
-            configuration/configure_dialog.h
-            configuration/configure_general.h
-            configuration/configure_graphics.h
-            configuration/configure_input.h
-            configuration/configure_system.h
-            debugger/profiler.h
-            debugger/registers.h
-            debugger/wait_tree.h
-            util/spinbox.h
-            util/util.h
-            bootmanager.h
-            game_list.h
-            game_list_p.h
-            hotkeys.h
-            main.h
-            ui_settings.h
-            )
+add_executable(yuzu
+    Info.plist
+    about_dialog.cpp
+    about_dialog.h
+    bootmanager.cpp
+    bootmanager.h
+    configuration/config.cpp
+    configuration/config.h
+    configuration/configure_debug.cpp
+    configuration/configure_debug.h
+    configuration/configure_dialog.cpp
+    configuration/configure_dialog.h
+    configuration/configure_general.cpp
+    configuration/configure_general.h
+    configuration/configure_graphics.cpp
+    configuration/configure_graphics.h
+    configuration/configure_input.cpp
+    configuration/configure_input.h
+    configuration/configure_system.cpp
+    configuration/configure_system.h
+    debugger/profiler.cpp
+    debugger/profiler.h
+    debugger/registers.cpp
+    debugger/registers.h
+    debugger/wait_tree.cpp
+    debugger/wait_tree.h
+    game_list.cpp
+    game_list.h
+    game_list_p.h
+    hotkeys.cpp
+    hotkeys.h
+    main.cpp
+    main.h
+    ui_settings.cpp
+    ui_settings.h
+    util/spinbox.cpp
+    util/spinbox.h
+    util/util.cpp
+    util/util.h
+    yuzu.rc
+)
 
 set(UIS
-            aboutdialog.ui
-            configuration/configure.ui
-            configuration/configure_debug.ui
-            configuration/configure_general.ui
-            configuration/configure_graphics.ui
-            configuration/configure_input.ui
-            configuration/configure_system.ui
-            debugger/registers.ui
-            hotkeys.ui
-            main.ui
-            )
+    aboutdialog.ui
+    configuration/configure.ui
+    configuration/configure_debug.ui
+    configuration/configure_general.ui
+    configuration/configure_graphics.ui
+    configuration/configure_input.ui
+    configuration/configure_system.ui
+    debugger/registers.ui
+    hotkeys.ui
+    main.ui
+)
 
 file(GLOB_RECURSE ICONS ${CMAKE_SOURCE_DIR}/dist/icons/*)
 file(GLOB_RECURSE THEMES ${CMAKE_SOURCE_DIR}/dist/qt_themes/*)
 
-create_directory_groups(${SRCS} ${HEADERS} ${UIS})
-
 qt5_wrap_ui(UI_HDRS ${UIS})
 
+target_sources(yuzu
+    PRIVATE
+        ${ICONS}
+        ${THEMES}
+        ${UI_HDRS}
+        ${UIS}
+)
+
 if (APPLE)
     set(MACOSX_ICON "../../dist/yuzu.icns")
     set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
-    add_executable(yuzu MACOSX_BUNDLE ${SRCS} ${HEADERS} ${UI_HDRS} ${MACOSX_ICON} ${ICONS})
+    target_sources(yuzu PRIVATE ${MACOSX_ICON})
+    set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE TRUE)
     set_target_properties(yuzu PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
-else()
-    add_executable(yuzu ${SRCS} ${HEADERS} ${UI_HDRS} ${ICONS})
 endif()
+
+create_target_directory_groups(yuzu)
+
 target_link_libraries(yuzu PRIVATE common core input_common video_core)
 target_link_libraries(yuzu PRIVATE Boost::boost glad Qt5::OpenGL Qt5::Widgets)
 target_link_libraries(yuzu PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)

+ 11 - 14
src/yuzu_cmd/CMakeLists.txt

@@ -1,21 +1,18 @@
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
 
-set(SRCS
-            emu_window/emu_window_sdl2.cpp
-            config.cpp
-            yuzu.cpp
-            yuzu.rc
-            )
-set(HEADERS
-            emu_window/emu_window_sdl2.h
-            config.h
-            default_ini.h
-            resource.h
-            )
+add_executable(yuzu-cmd
+    config.cpp
+    config.h
+    default_ini.h
+    emu_window/emu_window_sdl2.cpp
+    emu_window/emu_window_sdl2.h
+    resource.h
+    yuzu.cpp
+    yuzu.rc
+)
 
-create_directory_groups(${SRCS} ${HEADERS})
+create_target_directory_groups(yuzu-cmd)
 
-add_executable(yuzu-cmd ${SRCS} ${HEADERS})
 target_link_libraries(yuzu-cmd PRIVATE common core input_common)
 target_link_libraries(yuzu-cmd PRIVATE inih glad)
 if (MSVC)