Skip to content

Commit 9a6861f

Browse files
committed
build: Fix CMake Xcode generator output
Xcode refuses to link a binary unless the binary target has the source file containing main() specified explicitly.
1 parent d683734 commit 9a6861f

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

CMakeLists.txt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${c-ray_SOURCE_DIR}/cmake")
6767

6868
file(GLOB_RECURSE SOURCES_LIB src/lib/*.c)
6969
file(GLOB_RECURSE SOURCES_DRIVER src/driver/*.c)
70+
list(REMOVE_ITEM SOURCES_DRIVER "${CMAKE_SOURCE_DIR}/src/driver/main.c")
7071
file(GLOB_RECURSE SOURCES_COMMON src/common/*.c)
7172

7273
include(set_up_ccache)
@@ -85,18 +86,21 @@ target_include_directories(driver PRIVATE ${CMAKE_SOURCE_DIR}/src/driver)
8586
add_library(common OBJECT ${SOURCES_COMMON})
8687
target_include_directories(common PRIVATE ${CMAKE_SOURCE_DIR}/src/common)
8788

88-
foreach(x IN ITEMS lib driver common)
89-
target_include_directories(${x} PRIVATE ${CMAKE_SOURCE_DIR}/include)
90-
target_include_directories(${x} PRIVATE ${CMAKE_SOURCE_DIR}/src)
91-
target_include_directories(${x} PRIVATE ${CMAKE_SOURCE_DIR}/tests)
92-
endforeach()
93-
9489
add_executable(c-ray
9590
$<TARGET_OBJECTS:lib>
9691
$<TARGET_OBJECTS:driver>
9792
$<TARGET_OBJECTS:common>
93+
src/driver/main.c
9894
)
9995

96+
foreach(x IN ITEMS lib driver common c-ray)
97+
target_include_directories(${x} PRIVATE ${CMAKE_SOURCE_DIR}/include)
98+
target_include_directories(${x} PRIVATE ${CMAKE_SOURCE_DIR}/src)
99+
target_include_directories(${x} PRIVATE ${CMAKE_SOURCE_DIR}/tests)
100+
endforeach()
101+
102+
target_include_directories(c-ray PRIVATE ${CMAKE_SOURCE_DIR}/src/driver)
103+
100104
if (NOT MSVC)
101105
target_link_libraries(c-ray PRIVATE -lpthread -lm -ldl)
102106
endif ()

0 commit comments

Comments
 (0)