mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-04 05:51:19 +12:00
build: improve the Linux aspect of things (#75)
Improved, fixed and streamlined cmake files. Optionally use system libraries instead of vcpkg (-DENABLE_VCPKG=OFF)
This commit is contained in:
parent
0f24b0663e
commit
f51a51df3b
18 changed files with 368 additions and 96 deletions
|
@ -79,18 +79,21 @@ set_target_properties(CemuBin PROPERTIES
|
|||
OUTPUT_NAME "Cemu"
|
||||
)
|
||||
|
||||
target_link_libraries(CemuBin PRIVATE CemuCommon CemuComponents CemuCafe CemuConfig CemuGui CemuAudio CemuInput CemuUtil)
|
||||
target_link_libraries(CemuBin PRIVATE
|
||||
CemuAudio
|
||||
CemuCafe
|
||||
CemuCommon
|
||||
CemuComponents
|
||||
CemuConfig
|
||||
CemuGui
|
||||
CemuInput
|
||||
CemuUtil
|
||||
)
|
||||
|
||||
target_link_libraries(CemuBin PRIVATE CemuAsm)
|
||||
target_link_libraries(CemuBin PRIVATE OpenSSL::SSL)
|
||||
target_link_libraries(CemuBin PRIVATE ZLIB::ZLIB)
|
||||
target_link_libraries(CemuBin PRIVATE ${wxWidgets_LIBRARIES})
|
||||
target_link_libraries(CemuBin PRIVATE CURL::libcurl)
|
||||
target_link_libraries(CemuBin PRIVATE imgui::imgui)
|
||||
target_link_libraries(CemuBin PRIVATE pugixml pugixml::static pugixml::pugixml)
|
||||
target_link_libraries(CemuBin PRIVATE SDL2::SDL2 SDL2::SDL2main) # is SDL2main needed?
|
||||
target_link_libraries(CemuBin PRIVATE imguiImpl OpenGL::GL)
|
||||
|
||||
target_link_libraries(CemuBin PUBLIC
|
||||
CemuCommon CemuAudio CemuInput CemuComponents CemuCafe CemuConfig CemuGui imguiImpl)
|
||||
|
||||
# needed because of some cyclic dependencies. fix this
|
||||
target_link_libraries(CemuBin PUBLIC
|
||||
CemuCommon CemuInput CemuComponents CemuCafe CemuResource CemuGui CemuAsm)
|
||||
if (ENABLE_WXWIDGETS)
|
||||
target_link_libraries(CemuBin PRIVATE wx::base wx::core)
|
||||
endif()
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
project(CemuCafe)
|
||||
|
||||
include_directories(".")
|
||||
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "GNU") OR (CMAKE_C_COMPILER_ID STREQUAL "Clang"))
|
||||
add_compile_options(-mssse3 -mavx2)
|
||||
endif()
|
||||
|
@ -14,20 +12,39 @@ set_property(TARGET CemuCafe PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CON
|
|||
|
||||
target_precompile_headers(CemuCafe PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_include_directories(CemuCafe PRIVATE ../)
|
||||
target_include_directories(CemuCafe PUBLIC "../")
|
||||
|
||||
#target_link_libraries(CemuCafe ZArchivexx)
|
||||
#target_link_libraries(CemuCafe CemuCommon CemuCore CemuConfig CemuUtil CemuResource)
|
||||
#target_link_libraries(CemuCafe OpenSSL::SSL)
|
||||
#target_link_libraries(CemuCafe ZLIB::ZLIB)
|
||||
#target_link_libraries(CemuCafe imgui::imgui)
|
||||
#target_link_libraries(CemuCafe imguiImpl)
|
||||
#target_link_libraries(CemuCafe pugixml pugixml::static pugixml::pugixml)
|
||||
#target_link_libraries(CemuCafe libzip::zip)
|
||||
target_link_libraries(CemuCafe glslang SPIRV)
|
||||
target_link_libraries(CemuCafe ih264d zarchive)
|
||||
#target_link_libraries(CemuCafe zstd::libzstd_static)
|
||||
target_link_libraries(CemuCafe PRIVATE
|
||||
CemuAsm
|
||||
CemuAudio
|
||||
CemuCommon
|
||||
CemuComponents
|
||||
CemuConfig
|
||||
CemuGui
|
||||
CemuInput
|
||||
CemuResource
|
||||
CemuUtil
|
||||
imguiImpl
|
||||
Boost::headers
|
||||
Boost::nowide
|
||||
CURL::libcurl
|
||||
fmt::fmt
|
||||
glslang::SPIRV
|
||||
ih264d
|
||||
imgui::imgui
|
||||
OpenSSL::Crypto
|
||||
OpenSSL::SSL
|
||||
PNG::PNG
|
||||
pugixml::pugixml
|
||||
ZArchive::zarchive
|
||||
ZLIB::ZLIB
|
||||
zstd::zstd
|
||||
)
|
||||
|
||||
IF(WIN32)
|
||||
target_link_libraries(CemuCafe iphlpapi)
|
||||
ENDIF()
|
||||
if (ENABLE_WXWIDGETS)
|
||||
target_link_libraries(CemuCafe PRIVATE wx::base wx::core)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
target_link_libraries(CemuCafe PRIVATE iphlpapi)
|
||||
endif()
|
||||
|
|
|
@ -8,9 +8,25 @@ set_property(TARGET CemuComponents PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$
|
|||
|
||||
target_precompile_headers(CemuComponents PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_include_directories(CemuComponents PRIVATE ../)
|
||||
target_include_directories(CemuComponents PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuComponents PRIVATE
|
||||
CemuCafe
|
||||
CemuCommon
|
||||
CemuConfig
|
||||
CemuGui
|
||||
CemuUtil
|
||||
Boost::headers
|
||||
CURL::libcurl
|
||||
OpenSSL::Crypto
|
||||
OpenSSL::SSL
|
||||
pugixml::pugixml
|
||||
ZLIB::ZLIB
|
||||
)
|
||||
|
||||
# PUBLIC because fmt/format.h is included in ExpressionParser/ExpressionParser.h
|
||||
target_link_libraries(CemuComponents PUBLIC fmt::fmt)
|
||||
|
||||
if(ENABLE_DISCORD_RPC)
|
||||
target_link_libraries(CemuComponents PRIVATE discord-rpc)
|
||||
endif()
|
||||
target_link_libraries(CemuComponents PRIVATE CemuUtil)
|
|
@ -1,7 +1,5 @@
|
|||
project(CemuCommon)
|
||||
|
||||
#include_directories(".")
|
||||
|
||||
file(GLOB CPP_FILES *.cpp)
|
||||
file(GLOB H_FILES *.h)
|
||||
add_library(CemuCommon ${CPP_FILES} ${H_FILES})
|
||||
|
@ -29,4 +27,22 @@ target_sources(CemuCommon
|
|||
)
|
||||
|
||||
target_precompile_headers(CemuCommon PUBLIC precompiled.h)
|
||||
target_include_directories(CemuCommon PRIVATE ../)
|
||||
target_include_directories(CemuCommon PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuCommon PRIVATE
|
||||
CemuCafe
|
||||
CemuConfig
|
||||
CemuComponents
|
||||
Boost::nowide
|
||||
Boost::filesystem
|
||||
glm::glm
|
||||
)
|
||||
|
||||
if (UNIX)
|
||||
target_link_libraries(CemuCommon PRIVATE X11::X11 X11::Xrender X11::Xutil)
|
||||
endif()
|
||||
|
||||
# PUBLIC because:
|
||||
# - boost/predef/os.h is included in platform.h
|
||||
# - fmt/core.h is included in precompiled.h
|
||||
target_link_libraries(CemuCommon PUBLIC Boost::headers fmt::fmt)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include "boost/predef/os.h"
|
||||
#include <boost/predef/os.h>
|
||||
#include <cstdint>
|
||||
|
||||
#if BOOST_OS_WINDOWS
|
||||
|
|
|
@ -34,9 +34,16 @@ endif()
|
|||
|
||||
target_precompile_headers(CemuAudio PRIVATE ../Common/precompiled.h)
|
||||
|
||||
#target_link_libraries(CemuAudio CemuCommon CemuGui CemuPlatform)
|
||||
target_include_directories(CemuAudio PRIVATE ../)
|
||||
target_include_directories(CemuAudio PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuAudio PRIVATE CemuCafe CemuConfig CemuGui CemuUtil)
|
||||
|
||||
if(ENABLE_CUBEB)
|
||||
target_link_libraries(CemuAudio cubeb)
|
||||
# PUBLIC because cubeb.h/cubeb.h is included in CubebAPI.h
|
||||
target_link_libraries(CemuAudio PUBLIC cubeb::cubeb)
|
||||
endif()
|
||||
|
||||
if (ENABLE_WXWIDGETS)
|
||||
# PUBLIC because wx/wx.h is included in audioDebuggerWindow.h
|
||||
target_link_libraries(CemuAudio PUBLIC wx::base wx::core)
|
||||
endif()
|
||||
|
|
|
@ -8,4 +8,19 @@ set_property(TARGET CemuConfig PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<C
|
|||
|
||||
target_precompile_headers(CemuConfig PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_include_directories(CemuConfig PRIVATE ../)
|
||||
target_include_directories(CemuConfig PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuConfig PRIVATE
|
||||
CemuCafe
|
||||
CemuCommon
|
||||
CemuUtil
|
||||
Boost::headers
|
||||
Boost::program_options
|
||||
pugixml::pugixml
|
||||
)
|
||||
|
||||
if (ENABLE_WXWIDGETS)
|
||||
# PUBLIC because wx/language.h is included in CemuConfig.h
|
||||
# Could be made PRIVATE by using 0 instead of wxLANGUAGE_DEFAULT
|
||||
target_link_libraries(CemuConfig PUBLIC wx::base wx::core)
|
||||
endif()
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
project(CemuGui)
|
||||
|
||||
include_directories(".")
|
||||
|
||||
file(GLOB_RECURSE CPP_FILES *.cpp)
|
||||
file(GLOB_RECURSE H_FILES *.h)
|
||||
add_library(CemuGui ${CPP_FILES} ${H_FILES})
|
||||
|
@ -17,13 +15,32 @@ wxcomponents/checktree.h
|
|||
|
||||
target_precompile_headers(CemuGui PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_include_directories(CemuGui PRIVATE ../)
|
||||
target_include_directories(CemuGui PUBLIC "../")
|
||||
# PUBLIC because rapidjson/document.h is included in ChecksumTool.h
|
||||
target_include_directories(CemuGui PUBLIC ${RAPIDJSON_INCLUDE_DIRS})
|
||||
|
||||
target_link_libraries(CemuGui ${wxWidgets_LIBRARIES})
|
||||
target_link_libraries(CemuGui libzip::zip)
|
||||
target_link_libraries(CemuGui CemuCafe CemuComponents CemuResource)
|
||||
target_link_libraries(CemuGui zarchive)
|
||||
target_link_libraries(CemuGui PRIVATE
|
||||
CemuAudio
|
||||
CemuCafe
|
||||
CemuCommon
|
||||
CemuComponents
|
||||
CemuConfig
|
||||
CemuInput
|
||||
CemuResource
|
||||
CemuUtil
|
||||
Boost::headers
|
||||
CURL::libcurl
|
||||
libzip::zip
|
||||
OpenSSL::Crypto
|
||||
pugixml::pugixml
|
||||
ZArchive::zarchive
|
||||
)
|
||||
|
||||
if(ENABLE_CUBEB)
|
||||
target_link_libraries(CemuGui cubeb)
|
||||
target_link_libraries(CemuGui PRIVATE cubeb::cubeb)
|
||||
endif()
|
||||
|
||||
if (ENABLE_WXWIDGETS)
|
||||
# PUBLIC because wx/app.h is included in CemuApp.h
|
||||
target_link_libraries(CemuGui PUBLIC wx::base wx::core wx::gl wx::propgrid wx::xrc)
|
||||
endif()
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
project(imguiImpl)
|
||||
|
||||
include_directories(".")
|
||||
|
||||
add_library(imguiImpl)
|
||||
|
||||
set_property(TARGET imguiImpl PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
|
@ -17,5 +15,14 @@ target_sources(imguiImpl PRIVATE
|
|||
|
||||
target_precompile_headers(imguiImpl PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_link_libraries(CemuCommon)
|
||||
target_include_directories(imguiImpl PRIVATE ../)
|
||||
target_include_directories(imguiImpl PUBLIC "../")
|
||||
|
||||
target_link_libraries(imguiImpl PRIVATE
|
||||
CemuCafe
|
||||
CemuCommon
|
||||
CemuGui
|
||||
CemuInput
|
||||
CemuResource
|
||||
CemuUtil
|
||||
imgui::imgui
|
||||
)
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
project(CemuInput)
|
||||
|
||||
include_directories(".")
|
||||
|
||||
add_library(CemuInput
|
||||
InputManager.cpp
|
||||
InputManager.h
|
||||
|
@ -95,4 +93,21 @@ endif()
|
|||
|
||||
target_precompile_headers(CemuInput PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_include_directories(CemuInput PRIVATE ../)
|
||||
target_include_directories(CemuInput PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuInput PRIVATE
|
||||
CemuCafe
|
||||
CemuCommon
|
||||
CemuConfig
|
||||
CemuGui
|
||||
CemuUtil
|
||||
Boost::headers
|
||||
Boost::program_options
|
||||
glm::glm
|
||||
pugixml::pugixml
|
||||
SDL2::SDL2
|
||||
)
|
||||
|
||||
if (ENABLE_WXWIDGETS)
|
||||
target_link_libraries(CemuInput PRIVATE wx::base wx::core)
|
||||
endif()
|
||||
|
|
|
@ -16,4 +16,6 @@ target_sources(CemuResource PRIVATE
|
|||
CafeDefaultFont.cpp
|
||||
)
|
||||
|
||||
target_include_directories(CemuResource PRIVATE ../)
|
||||
target_include_directories(CemuResource PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuResource PRIVATE CemuComponents)
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
project(CemuUtil)
|
||||
|
||||
include_directories(".")
|
||||
|
||||
file(GLOB_RECURSE CPP_FILES *.cpp)
|
||||
file(GLOB_RECURSE H_FILES *.h)
|
||||
|
||||
|
@ -11,5 +9,16 @@ set_property(TARGET CemuUtil PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CON
|
|||
|
||||
target_precompile_headers(CemuUtil PRIVATE ../Common/precompiled.h)
|
||||
|
||||
target_link_libraries(CemuUtil CemuCommon CemuConfig)
|
||||
target_include_directories(CemuUtil PRIVATE ../)
|
||||
target_include_directories(CemuUtil PUBLIC "../")
|
||||
|
||||
target_link_libraries(CemuUtil PRIVATE
|
||||
CemuCommon
|
||||
CemuConfig
|
||||
Boost::headers
|
||||
Boost::nowide
|
||||
OpenSSL::Crypto
|
||||
)
|
||||
|
||||
if (ENABLE_WXWIDGETS)
|
||||
target_link_libraries(CemuUtil PRIVATE wx::base wx::core)
|
||||
endif()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue