@@ -6,14 +6,16 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
66enable_testing ()
77
88# ---------------------------
9- # Include directories
9+ # Global Settings
1010# ---------------------------
1111include_directories (include )
12+ # Required for linking static code into a shared library on some platforms
13+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
1214
1315# ---------------------------
14- # Library : StringConversionLib
16+ # 1. Core Logic : StringConversionLib (STATIC)
1517# ---------------------------
16- add_library (StringConversionLib SHARED
18+ add_library (StringConversionLib STATIC
1719 src/AlternatingCaseConversion.cpp
1820 src/CapitalizeWordsConversion.cpp
1921 src/Client.cpp
@@ -31,48 +33,43 @@ add_library(StringConversionLib SHARED
3133 src/ToggleCaseConversion.cpp
3234 src/UpperCaseConversion.cpp
3335)
36+ target_include_directories (StringConversionLib PUBLIC include )
3437
35- set_target_properties (StringConversionLib PROPERTIES OUTPUT_NAME "ProcessStringDLL" )
38+ # ---------------------------
39+ # 2. The Bridge DLL: ProcessStringDLL (SHARED)
40+ # ---------------------------
41+ # This creates the actual file (libProcessStringDLL.dylib / .so) for .NET
42+ add_library (ProcessStringDLL SHARED src/ProcessStringDLL.cpp )
43+ target_link_libraries (ProcessStringDLL PRIVATE StringConversionLib )
3644
37- target_include_directories (StringConversionLib PUBLIC include )
45+ # Ensure the "lib" prefix is consistent for your scripts
46+ set_target_properties (ProcessStringDLL PROPERTIES PREFIX "lib" )
3847
3948# ---------------------------
40- # Main Application
49+ # 3. Main Application (CLI)
4150# ---------------------------
4251add_executable (app src/sourcecode.cpp )
4352target_link_libraries (app StringConversionLib )
4453
4554# ---------------------------
46- # GoogleTest Setup
55+ # 4. GoogleTest Setup
4756# ---------------------------
4857include (FetchContent )
49-
50- # Force GoogleTest to use the same runtime on Windows
5158set (gtest_force_shared_crt ON CACHE BOOL "" FORCE )
5259
53-
5460FetchContent_Declare (
5561 googletest
5662 URL https://github.com/google/googletest/archive/main.zip
5763)
58-
59- # Make GoogleTest available
6064FetchContent_MakeAvailable (googletest)
6165
6266# ---------------------------
63- # Test Executable
67+ # 5. Test Executable
6468# ---------------------------
6569add_executable (runTests
6670 ${PROJECT_SOURCE_DIR} /../tests/CppTests/StringConversionTests.cpp
6771 ${PROJECT_SOURCE_DIR} /../tests/CppTests/AdvancedStringConversionTests.cpp
6872)
69-
70- # Link the library and GoogleTest
7173target_link_libraries (runTests StringConversionLib gtest gtest_main )
7274
73- # ---------------------------
74- # Register tests with CTest
75- # ---------------------------
76- add_test (NAME AllTests COMMAND runTests )
77-
78-
75+ add_test (NAME AllTests COMMAND runTests )
0 commit comments