Skip to content

Commit 21dabf7

Browse files
committed
fixing windows problem
1 parent 0e6d582 commit 21dabf7

File tree

3 files changed

+27
-17
lines changed

3 files changed

+27
-17
lines changed

.github/workflows/windows-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
4343
# Step 5: Configure CMake
4444
- name: Configure CMake
45-
run: cmake -S . -G "Ninja Multi-Config" -B build
45+
run: cmake -S . -G "Ninja Multi-Config" -B build -DCMAKE_CXX_FLAGS="/W3"
4646

4747
# Step 6: Build with CMake
4848
- name: Build with CMake

CMakeLists.txt

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
2020
endif()
2121
endif()
2222

23+
# Handle threading library for different platforms
24+
if(WIN32)
25+
set(THREADING_LIB "")
26+
else()
27+
set(THREADING_LIB "-pthread")
28+
endif()
29+
2330
message("CMAKE_CXX_COMPILER_VERSION: " ${CMAKE_CXX_COMPILER_VERSION})
2431

2532
option(ENABLE_JSON "enable the json example with nlohmann library" ON)
@@ -128,7 +135,7 @@ add_executable(pimpl src/pimpl/main.cpp src/pimpl/studentpimpl.cpp)
128135
add_executable(return_type_resolver src/return_type_resolver.cpp)
129136

130137
add_executable(RAII src/RAII.cpp)
131-
target_link_libraries(RAII -pthread)
138+
target_link_libraries(RAII ${THREADING_LIB})
132139

133140
add_executable(SFINAE src/SFINAE.cpp)
134141

@@ -142,36 +149,36 @@ add_executable(stack_unwinding src/stack_unwinding.cpp)
142149

143150
# ############################ Multithreading #############################
144151
add_executable(creating_and_terminating_threads src/multithreading/creating_and_terminating_threads.cpp)
145-
target_link_libraries(creating_and_terminating_threads -pthread)
152+
target_link_libraries(creating_and_terminating_threads ${THREADING_LIB})
146153

147154
add_executable(differentiating_between_threads src/multithreading/differentiating_between_threads.cpp)
148-
target_link_libraries(differentiating_between_threads -pthread)
155+
target_link_libraries(differentiating_between_threads ${THREADING_LIB})
149156

150157
add_executable(sleeping_threads src/multithreading/sleeping_threads.cpp)
151-
target_link_libraries(sleeping_threads -pthread)
158+
target_link_libraries(sleeping_threads ${THREADING_LIB})
152159

153160
add_executable(join_detach_threads src/multithreading/join_detach_threads.cpp)
154-
target_link_libraries(join_detach_threads -pthread)
161+
target_link_libraries(join_detach_threads ${THREADING_LIB})
155162

156163
add_executable(mutex src/multithreading/mutex.cpp)
157-
target_link_libraries(mutex -pthread)
164+
target_link_libraries(mutex ${THREADING_LIB})
158165

159166
# add_executable(condition_variable src/multithreading/condition_variable.cpp)
160167
# target_link_libraries(condition_variable -pthread)
161168
add_executable(async_future_promise src/multithreading/async_future_promise.cpp)
162-
target_link_libraries(async_future_promise -pthread)
169+
target_link_libraries(async_future_promise ${THREADING_LIB})
163170

164171
add_executable(dead_lock src/multithreading/dead_lock.cpp)
165-
target_link_libraries(dead_lock -pthread)
172+
target_link_libraries(dead_lock ${THREADING_LIB})
166173

167174
add_executable(thread_safe src/multithreading/thread_safe.cpp)
168-
target_link_libraries(thread_safe -pthread)
175+
target_link_libraries(thread_safe ${THREADING_LIB})
169176

170177
add_executable(packaged_task src/multithreading/packaged_task.cpp)
171-
target_link_libraries(packaged_task -pthread)
178+
target_link_libraries(packaged_task ${THREADING_LIB})
172179

173180
add_executable(race_condition src/multithreading/race_condition.cpp)
174-
target_link_libraries(race_condition -pthread)
181+
target_link_libraries(race_condition ${THREADING_LIB})
175182

176183
add_executable(unique_lock src/multithreading/unique_lock.cpp)
177184
target_link_libraries(unique_lock -pthread)

src/align.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#include <iostream>
33
#include <stddef.h> // for offsetof()
44
#include <stdio.h>
5-
#include <unistd.h>
65

76
//#pragma pack(1)
87

@@ -28,14 +27,18 @@ struct Foo3UnPacked {
2827
const int aligned_value = 8;
2928

3029
struct Foo3 {
30+
#ifdef __GNUC__
3131
char c1 __attribute__((packed, aligned(aligned_value)));
32-
;
3332
char c2 __attribute__((packed, aligned(aligned_value)));
34-
;
3533
int i1 __attribute__((packed, aligned(aligned_value)));
36-
;
3734
int i2 __attribute__((packed, aligned(aligned_value)));
38-
;
35+
#else
36+
// For MSVC and other compilers, use alignas
37+
alignas(aligned_value) char c1;
38+
alignas(aligned_value) char c2;
39+
alignas(aligned_value) int i1;
40+
alignas(aligned_value) int i2;
41+
#endif
3942
};
4043

4144
struct alignas(8) Foo4 {

0 commit comments

Comments
 (0)