Skip to content

Commit 737afd7

Browse files
authored
Separate projects for tests (#755)
* CMake: Separate server & client projects to lib/exe * VS: Add separate projects Also group them to be slightly less obnoxious. * Move the server projects into unique namespaces This helps avoid clashes between names (particularly with things like CUser, or common constants). * Rename lib* to project.Core This helps sort it in the IDE to be slightly less of an inconvenience.
1 parent a9582a9 commit 737afd7

File tree

142 files changed

+3327
-1552
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

142 files changed

+3327
-1552
lines changed

All.slnx

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@
1313
<Project Path="src/Client/Option/Option.vcxproj" Id="3fefbf4a-b12c-4e32-be93-4ea51fd09f63" />
1414
</Folder>
1515
<Folder Name="/client/">
16-
<Project DefaultStartup="true" Path="src/Client/WarFare/WarFare.vcxproj" Id="02a7c2de-6db6-477a-977a-adf0bf2204a6">
16+
<Project Path="src/Client/WarFare/WarFare.Core.vcxproj" Id="02a7c2de-6db6-477a-977a-adf0bf2204a6">
1717
<BuildDependency Project="src/Client/JpegFile/JpegFile.vcxproj" />
1818
<BuildDependency Project="src/N3Base/N3Base_client.vcxproj" />
1919
<BuildDependency Project="deps/fetch-and-build-wrappers/fetch-ko-client-assets.vcxproj" />
2020
<BuildDependency Project="src/shared/shared.vcxproj" />
2121
</Project>
22+
<Project DefaultStartup="true" Path="src/Client/WarFare/WarFare.vcxproj" Id="ed8afb92-15ce-4537-a81c-d4120d31977c">
23+
<BuildDependency Project="src/Client/WarFare/WarFare.Core.vcxproj" />
24+
</Project>
2225
</Folder>
2326
<Folder Name="/client/_deps/">
2427
<Project Path="src/N3Base/N3Base_client.vcxproj" Id="d06d505a-f28e-343f-09f4-c3809398b508">
@@ -31,37 +34,52 @@
3134
</Project>
3235
</Folder>
3336
<Folder Name="/server/">
34-
<Project Path="src/Server/AIServer/AIServer.vcxproj" Id="023cd26d-5809-4716-a245-b1e146c6e7fe">
37+
<Project Path="src/Server/AIServer/AIServer.Core.vcxproj" Id="023cd26d-5809-4716-a245-b1e146c6e7fe">
3538
<BuildDependency Project="src/db-library/db-library.vcxproj" />
3639
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
3740
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
3841
<BuildDependency Project="src/shared/shared.vcxproj" />
3942
</Project>
40-
<Project Path="src/Server/Aujard/Aujard.vcxproj" Id="c564ac8f-adf8-4b90-b8cd-0834f7db144b">
43+
<Project Path="src/Server/AIServer/AIServer.vcxproj" Id="7f0e559a-7f03-4ad8-b1be-efaff6797178">
44+
<BuildDependency Project="src/Server/AIServer/AIServer.Core.vcxproj" />
45+
</Project>
46+
<Project Path="src/Server/Aujard/Aujard.Core.vcxproj" Id="c564ac8f-adf8-4b90-b8cd-0834f7db144b">
4147
<BuildDependency Project="src/db-library/db-library.vcxproj" />
4248
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
4349
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
4450
<BuildDependency Project="src/shared/shared.vcxproj" />
4551
</Project>
46-
<Project Path="src/Server/Ebenezer/Ebenezer.vcxproj" Id="64439624-b2df-4550-9c52-67e61b8ec0ef">
47-
<BuildDependency Project="src/db-library/db-library.vcxproj" />
52+
<Project Path="src/Server/Aujard/Aujard.vcxproj" Id="f0440138-6168-4eb6-b4d0-195befcded40">
53+
<BuildDependency Project="src/Server/Aujard/Aujard.Core.vcxproj" />
54+
</Project>
55+
<Project Path="src/Server/Ebenezer/Ebenezer.Core.vcxproj" Id="64439624-b2df-4550-9c52-67e61b8ec0ef">
4856
<BuildDependency Project="deps/fetch-and-build-wrappers/fetch-djb2.vcxproj" />
57+
<BuildDependency Project="src/db-library/db-library.vcxproj" />
4958
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
5059
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
5160
<BuildDependency Project="src/shared/shared.vcxproj" />
5261
</Project>
53-
<Project Path="src/Server/ItemManager/ItemManager.vcxproj" Id="2208d5f7-eb5b-4b13-a89b-cfe279b4307b">
62+
<Project Path="src/Server/Ebenezer/Ebenezer.vcxproj" Id="7025a37a-bd1f-432e-bbf7-05591dc159da">
63+
<BuildDependency Project="src/Server/Ebenezer/Ebenezer.Core.vcxproj" />
64+
</Project>
65+
<Project Path="src/Server/ItemManager/ItemManager.Core.vcxproj" Id="2208d5f7-eb5b-4b13-a89b-cfe279b4307b">
5466
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
5567
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
5668
<BuildDependency Project="src/shared/shared.vcxproj" />
5769
</Project>
58-
<Project Path="src/Server/VersionManager/VersionManager.vcxproj" Id="d5fad895-323c-4be1-a066-3e70bb8c2bb4">
59-
<BuildDependency Project="src/db-library/db-library.vcxproj" />
70+
<Project Path="src/Server/ItemManager/ItemManager.vcxproj" Id="2f8d19f8-5ab6-4aea-8c56-24c7b103e47e">
71+
<BuildDependency Project="src/Server/ItemManager/ItemManager.Core.vcxproj" />
72+
</Project>
73+
<Project Path="src/Server/VersionManager/VersionManager.Core.vcxproj" Id="d5fad895-323c-4be1-a066-3e70bb8c2bb4">
6074
<BuildDependency Project="deps/fetch-and-build-wrappers/fetch-spdlog.vcxproj" />
75+
<BuildDependency Project="src/db-library/db-library.vcxproj" />
6176
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
6277
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
6378
<BuildDependency Project="src/shared/shared.vcxproj" />
6479
</Project>
80+
<Project Path="src/Server/VersionManager/VersionManager.vcxproj" Id="b73a7541-1a9b-474c-a37b-725ac3ca7056">
81+
<BuildDependency Project="src/Server/VersionManager/VersionManager.Core.vcxproj" />
82+
</Project>
6583
</Folder>
6684
<Folder Name="/server/_deps/">
6785
<Project Path="src/Server/shared-server/shared-server.vcxproj" Id="c630cf44-84a8-4586-a710-c420bf54dc13">

Client.slnx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,13 @@
5050
</Project>
5151
<Project Path="deps/fetch-and-build-wrappers/sync-submodules.vcxproj" Id="1f14357d-e06a-48a1-b39a-74082f381fc0" />
5252
</Folder>
53-
<Project DefaultStartup="true" Path="src/Client/WarFare/WarFare.vcxproj" Id="02a7c2de-6db6-477a-977a-adf0bf2204a6">
53+
<Project Path="src/Client/WarFare/WarFare.Core.vcxproj" Id="02a7c2de-6db6-477a-977a-adf0bf2204a6">
5454
<BuildDependency Project="src/Client/JpegFile/JpegFile.vcxproj" />
5555
<BuildDependency Project="src/N3Base/N3Base_client.vcxproj" />
5656
<BuildDependency Project="deps/fetch-and-build-wrappers/fetch-ko-client-assets.vcxproj" />
5757
<BuildDependency Project="src/shared/shared.vcxproj" />
5858
</Project>
59+
<Project DefaultStartup="true" Path="src/Client/WarFare/WarFare.vcxproj" Id="ed8afb92-15ce-4537-a81c-d4120d31977c">
60+
<BuildDependency Project="src/Client/WarFare/WarFare.Core.vcxproj" />
61+
</Project>
5962
</Solution>

Server.slnx

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,34 +66,50 @@
6666
</Project>
6767
<Project Path="deps/fetch-and-build-wrappers/sync-submodules.vcxproj" Id="1f14357d-e06a-48a1-b39a-74082f381fc0" />
6868
</Folder>
69-
<Project DefaultStartup="true" Path="src/Server/AIServer/AIServer.vcxproj" Id="023cd26d-5809-4716-a245-b1e146c6e7fe">
69+
<Project Path="src/Server/AIServer/AIServer.Core.vcxproj" Id="023cd26d-5809-4716-a245-b1e146c6e7fe">
7070
<BuildDependency Project="src/db-library/db-library.vcxproj" />
7171
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
7272
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
7373
<BuildDependency Project="src/shared/shared.vcxproj" />
7474
</Project>
75-
<Project Path="src/Server/Aujard/Aujard.vcxproj" Id="c564ac8f-adf8-4b90-b8cd-0834f7db144b">
75+
<Project DefaultStartup="true" Path="src/Server/AIServer/AIServer.vcxproj" Id="7f0e559a-7f03-4ad8-b1be-efaff6797178">
76+
<BuildDependency Project="src/Server/AIServer/AIServer.Core.vcxproj" />
77+
</Project>
78+
<Project Path="src/Server/Aujard/Aujard.Core.vcxproj" Id="c564ac8f-adf8-4b90-b8cd-0834f7db144b">
7679
<BuildDependency Project="src/db-library/db-library.vcxproj" />
7780
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
7881
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
7982
<BuildDependency Project="src/shared/shared.vcxproj" />
8083
</Project>
81-
<Project Path="src/Server/Ebenezer/Ebenezer.vcxproj" Id="64439624-b2df-4550-9c52-67e61b8ec0ef">
82-
<BuildDependency Project="src/db-library/db-library.vcxproj" />
84+
<Project Path="src/Server/Aujard/Aujard.vcxproj" Id="f0440138-6168-4eb6-b4d0-195befcded40">
85+
<BuildDependency Project="src/Server/Aujard/Aujard.Core.vcxproj" />
86+
</Project>
87+
<Project Path="src/Server/Ebenezer/Ebenezer.Core.vcxproj" Id="64439624-b2df-4550-9c52-67e61b8ec0ef">
8388
<BuildDependency Project="deps/fetch-and-build-wrappers/fetch-djb2.vcxproj" />
89+
<BuildDependency Project="src/db-library/db-library.vcxproj" />
8490
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
8591
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
8692
<BuildDependency Project="src/shared/shared.vcxproj" />
8793
</Project>
88-
<Project Path="src/Server/ItemManager/ItemManager.vcxproj" Id="2208d5f7-eb5b-4b13-a89b-cfe279b4307b">
94+
<Project Path="src/Server/Ebenezer/Ebenezer.vcxproj" Id="7025a37a-bd1f-432e-bbf7-05591dc159da">
95+
<BuildDependency Project="src/Server/Ebenezer/Ebenezer.Core.vcxproj" />
96+
</Project>
97+
<Project Path="src/Server/ItemManager/ItemManager.Core.vcxproj" Id="2208d5f7-eb5b-4b13-a89b-cfe279b4307b">
8998
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
9099
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
91100
<BuildDependency Project="src/shared/shared.vcxproj" />
92101
</Project>
93-
<Project Path="src/Server/VersionManager/VersionManager.vcxproj" Id="d5fad895-323c-4be1-a066-3e70bb8c2bb4">
102+
<Project Path="src/Server/ItemManager/ItemManager.vcxproj" Id="2f8d19f8-5ab6-4aea-8c56-24c7b103e47e">
103+
<BuildDependency Project="src/Server/ItemManager/ItemManager.Core.vcxproj" />
104+
</Project>
105+
<Project Path="src/Server/VersionManager/VersionManager.Core.vcxproj" Id="d5fad895-323c-4be1-a066-3e70bb8c2bb4">
106+
<BuildDependency Project="deps/fetch-and-build-wrappers/fetch-spdlog.vcxproj" />
94107
<BuildDependency Project="src/db-library/db-library.vcxproj" />
95108
<BuildDependency Project="src/FileIO/FileIO.vcxproj" />
96109
<BuildDependency Project="src/Server/shared-server/shared-server.vcxproj" />
97110
<BuildDependency Project="src/shared/shared.vcxproj" />
98111
</Project>
112+
<Project Path="src/Server/VersionManager/VersionManager.vcxproj" Id="b73a7541-1a9b-474c-a37b-725ac3ca7056">
113+
<BuildDependency Project="src/Server/VersionManager/VersionManager.Core.vcxproj" />
114+
</Project>
99115
</Solution>

src/Client/WarFare/CMakeLists.txt

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ set(WARFARE_POPUP_NOTICE_TEXT_SOURCES
268268
WarMessage.h
269269
)
270270

271-
add_executable(WarFare
271+
add_library(WarFare.Core
272272
Bitset.h
273273
ClientResourceFormatter.cpp
274274
ClientResourceFormatter.h
@@ -277,7 +277,6 @@ add_executable(WarFare
277277
GameDef.h
278278
GameEng.cpp
279279
GameEng.h
280-
Resource.rc
281280
StdAfx.h
282281
WarFareMain.cpp
283282
${WARFARE_SCENE_SOURCES}
@@ -303,6 +302,12 @@ add_executable(WarFare
303302
"${TARGET_CLIENT_CONFIG_HEADER}"
304303
)
305304

305+
add_executable(WarFare
306+
resource.h
307+
StdAfx.h
308+
WarFareMain.cpp
309+
)
310+
306311
source_group("Scene" FILES ${WARFARE_SCENE_SOURCES})
307312
source_group("Scene/Login" FILES ${WARFARE_SCENE_LOGIN_SOURCES})
308313
source_group("Scene/Nation selection" FILES ${WARFARE_SCENE_NATION_SELECTION_SOURCES})
@@ -335,22 +340,27 @@ endif()
335340

336341
# Enable warnings as errors
337342
if(OPENKO_COMPILE_WARNINGS_AS_ERROR)
343+
set_property(TARGET WarFare.Core PROPERTY COMPILE_WARNING_AS_ERROR ON)
338344
set_property(TARGET WarFare PROPERTY COMPILE_WARNING_AS_ERROR ON)
339345
endif()
340346

341347
# Setup PCH
342-
target_precompile_headers(WarFare PRIVATE StdAfx.h)
348+
target_precompile_headers(WarFare.Core PRIVATE StdAfx.h)
343349

344350
# Setup dependencies
345-
target_link_libraries(WarFare PRIVATE
351+
target_link_libraries(WarFare.Core PUBLIC
346352
FileIO
347353
JpegFile
348354
N3Base_client
349355
)
350356

357+
target_link_libraries(WarFare PRIVATE
358+
WarFare.Core
359+
)
360+
351361
# Link in the libs that we use
352362
if(WIN32)
353-
target_link_libraries(WarFare PRIVATE
363+
target_link_libraries(WarFare.Core PRIVATE
354364
imm32.lib
355365
winmm.lib
356366
ws2_32.lib
@@ -359,10 +369,19 @@ if(WIN32)
359369
endif()
360370

361371
# Setup preprocessor defines
372+
target_compile_definitions(WarFare.Core PRIVATE
373+
_WINSOCK_DEPRECATED_NO_WARNINGS)
374+
362375
target_compile_definitions(WarFare PRIVATE
363376
_WINSOCK_DEPRECATED_NO_WARNINGS)
364377

365378
# Setup warning levels
379+
target_compile_options(WarFare.Core PRIVATE
380+
$<$<CXX_COMPILER_ID:MSVC>:/W3>
381+
$<$<CXX_COMPILER_ID:GNU>:-Wall>
382+
$<$<CXX_COMPILER_ID:Clang>:-Wall -Wextra>
383+
)
384+
366385
target_compile_options(WarFare PRIVATE
367386
$<$<CXX_COMPILER_ID:MSVC>:/W3>
368387
$<$<CXX_COMPILER_ID:GNU>:-Wall>

0 commit comments

Comments
 (0)