Skip to content

Commit d19c8ca

Browse files
committedMay 21, 2024·
leave SOURCES to last position
1 parent 5c25ae2 commit d19c8ca

File tree

7 files changed

+80
-50
lines changed

7 files changed

+80
-50
lines changed
 

‎cxxbuild/cxxbuild.py

+28-20
Original file line numberDiff line numberDiff line change
@@ -491,37 +491,21 @@ def generate_cmakelists(cppstd, root_path, INCLUDE_DIRS, DEFINITIONS, EXTRA_SOUR
491491
for d in DEFINITIONS:
492492
# TODO: check definition type! type1: JUST_DEF type2: DEF="value"
493493
cmakelists.append("add_definitions(-D"+d+")")
494-
# add sources!
495-
cmakelists.append("set(SOURCES")
496-
# add extra sources!
497-
for esrc in EXTRA_SOURCES:
498-
cmakelists.append(esrc)
499-
# get all sources not in main() list (no duplicates exist)
500-
clean_list = []
501-
clean_list_main = []
502-
for f in src_list:
503-
clean_list.append(f.replace("\\", "/"))
504-
#clean_list = list(set(clean_list)) # do not do this!
505-
for filepath, app_name in src_main.items():
506-
clean_list_main.append(filepath.replace("\\", "/"))
507-
#clean_list_main = list(set(clean_list_main)) # do not do this!
508-
clean_list = [x for x in clean_list if x not in clean_list_main]
509-
for f in clean_list:
510-
cmakelists.append("\t"+f)
511-
cmakelists.append(")")
494+
#
495+
cmakelists.append("# add all executables")
512496
COUNT_APP_ID=1
513497
all_apps = []
514498
# add_executable for binaries
515499
for filepath, app_name in src_main.items():
516-
cmakelists.append("add_executable("+app_name[1]+" "+filepath.replace("\\", "/")+" ${SOURCES})")
500+
cmakelists.append("add_executable("+app_name[1]+" "+filepath.replace("\\", "/")+" )")
517501
# add_executable for test binaries
518502
print("finding test executables!")
519503
# if no main is found, then each test is assumed to be independent!
520504
if len(src_test_main.items()) == 0:
521505
print("WARNING: no main() is found for tests... using main-less strategy!")
522506
src_test_main = src_test_nomain
523507
for filepath, app_name in src_test_main.items():
524-
cmakelists.append("add_executable("+app_name[1]+" "+filepath.replace("\\", "/")+" ${SOURCES})")
508+
cmakelists.append("add_executable("+app_name[1]+" "+filepath.replace("\\", "/")+" )")
525509

526510

527511
# INCLUDE_DIRS will act as header-only libraries
@@ -540,6 +524,30 @@ def generate_cmakelists(cppstd, root_path, INCLUDE_DIRS, DEFINITIONS, EXTRA_SOUR
540524
# cxxdeps.txt
541525
cmakelists = get_cmakelists_from_cxxdeps(root_path, cmakelists, INCLUDE_DIRS, src_main, src_test_main)
542526

527+
# ======== begin add sources ========
528+
cmakelists.append("# finally, add all sources")
529+
cmakelists.append("set(SOURCES")
530+
# add extra sources!
531+
for esrc in EXTRA_SOURCES:
532+
cmakelists.append("\t"+esrc)
533+
# get all sources not in main() list (no duplicates exist)
534+
clean_list = []
535+
clean_list_main = []
536+
for f in src_list:
537+
clean_list.append(f.replace("\\", "/"))
538+
#clean_list = list(set(clean_list)) # do not do this!
539+
for filepath, app_name in src_main.items():
540+
clean_list_main.append(filepath.replace("\\", "/"))
541+
#clean_list_main = list(set(clean_list_main)) # do not do this!
542+
clean_list = [x for x in clean_list if x not in clean_list_main]
543+
for f in clean_list:
544+
cmakelists.append("\t"+f)
545+
cmakelists.append(")")
546+
# ======== end add sources ========
547+
for filepath, app_name in src_main.items():
548+
cmakelists.append("target_sources("+app_name[1]+" PRIVATE ${SOURCES})")
549+
for filepath, app_name in src_test_main.items():
550+
cmakelists.append("target_sources("+app_name[1]+" PRIVATE ${SOURCES})")
543551

544552

545553
# Generate CMakeLists.txt (or look for other option, such as 'bazel')

‎demo/project1/CMakeLists.txt

+10-6
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ set (CMAKE_CXX_STANDARD_REQUIRED ON)
55
set (CMAKE_CXX_EXTENSIONS OFF)
66
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
77
Include(FetchContent)
8-
set(SOURCES
9-
src/something.cpp
10-
)
11-
add_executable(demo1 src/demo1.cpp ${SOURCES})
12-
add_executable(my_test tests/my_test.cpp ${SOURCES})
8+
# add all executables
9+
add_executable(demo1 src/demo1.cpp )
10+
add_executable(my_test tests/my_test.cpp )
1311
add_library(my_headers0 INTERFACE)
1412
target_include_directories(my_headers0 INTERFACE include)
1513
target_link_libraries(demo1 PRIVATE my_headers0)
@@ -40,4 +38,10 @@ IF (UNIX AND NOT APPLE) # linux
4038
target_link_libraries(my_headers0 INTERFACE crypto)
4139
target_link_libraries(demo1 PRIVATE crypto)
4240
target_link_libraries(my_test PRIVATE crypto)
43-
ENDIF()
41+
ENDIF()
42+
# finally, add all sources
43+
set(SOURCES
44+
src/something.cpp
45+
)
46+
target_sources(demo1 PRIVATE ${SOURCES})
47+
target_sources(my_test PRIVATE ${SOURCES})

‎demo/project2/CMakeLists.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ set (CMAKE_CXX_STANDARD_REQUIRED ON)
55
set (CMAKE_CXX_EXTENSIONS OFF)
66
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
77
Include(FetchContent)
8+
# add all executables
9+
add_executable(demo2 src/demo2.cpp )
10+
# finally, add all sources
811
set(SOURCES
912
src/something.cpp
1013
)
11-
add_executable(demo2 src/demo2.cpp ${SOURCES})
14+
target_sources(demo2 PRIVATE ${SOURCES})

‎demo/project3/CMakeLists.txt

+10-6
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ set (CMAKE_CXX_STANDARD_REQUIRED ON)
55
set (CMAKE_CXX_EXTENSIONS OFF)
66
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
77
Include(FetchContent)
8-
set(SOURCES
9-
src/something.cpp
10-
)
11-
add_executable(demo3 src/demo3.cpp ${SOURCES})
12-
add_executable(my_test tests/my_test.cpp ${SOURCES})
8+
# add all executables
9+
add_executable(demo3 src/demo3.cpp )
10+
add_executable(my_test tests/my_test.cpp )
1311
add_library(my_headers0 INTERFACE)
1412
target_include_directories(my_headers0 INTERFACE include)
1513
target_link_libraries(demo3 PRIVATE my_headers0)
@@ -33,4 +31,10 @@ ENDIF()
3331
FetchContent_Declare(Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.5.1)
3432
FetchContent_MakeAvailable(Catch2)
3533
target_link_libraries(my_test PRIVATE Catch2::Catch2WithMain)
36-
# cxxdeps dependency catch2
34+
# cxxdeps dependency catch2
35+
# finally, add all sources
36+
set(SOURCES
37+
src/something.cpp
38+
)
39+
target_sources(demo3 PRIVATE ${SOURCES})
40+
target_sources(my_test PRIVATE ${SOURCES})

‎demo/project4/CMakeLists.txt

+10-6
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ set (CMAKE_CXX_STANDARD_REQUIRED ON)
55
set (CMAKE_CXX_EXTENSIONS OFF)
66
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
77
Include(FetchContent)
8-
set(SOURCES
9-
src/something.cpp
10-
)
11-
add_executable(demo4 src/demo4.cpp ${SOURCES})
12-
add_executable(my_test tests/my_test.cpp ${SOURCES})
8+
# add all executables
9+
add_executable(demo4 src/demo4.cpp )
10+
add_executable(my_test tests/my_test.cpp )
1311
add_library(my_headers0 INTERFACE)
1412
target_include_directories(my_headers0 INTERFACE include)
1513
target_link_libraries(demo4 PRIVATE my_headers0)
@@ -19,4 +17,10 @@ target_link_libraries(my_test PRIVATE my_headers0)
1917
FetchContent_Declare(Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.5.1)
2018
FetchContent_MakeAvailable(Catch2)
2119
target_link_libraries(my_test PRIVATE Catch2::Catch2WithMain)
22-
# cxxdeps dependency catch2
20+
# cxxdeps dependency catch2
21+
# finally, add all sources
22+
set(SOURCES
23+
src/something.cpp
24+
)
25+
target_sources(demo4 PRIVATE ${SOURCES})
26+
target_sources(my_test PRIVATE ${SOURCES})

‎demo/project5/CMakeLists.txt

+9-5
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ set (CMAKE_CXX_STANDARD_REQUIRED ON)
55
set (CMAKE_CXX_EXTENSIONS OFF)
66
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
77
Include(FetchContent)
8-
set(SOURCES
9-
)
10-
add_executable(demo5 src/demo5.cpp ${SOURCES})
11-
add_executable(my_test tests/my_test.cpp ${SOURCES})
8+
# add all executables
9+
add_executable(demo5 src/demo5.cpp )
10+
add_executable(my_test tests/my_test.cpp )
1211
add_library(my_headers0 INTERFACE)
1312
target_include_directories(my_headers0 INTERFACE include)
1413
target_link_libraries(demo5 PRIVATE my_headers0)
@@ -23,4 +22,9 @@ target_link_libraries(my_test PRIVATE fmt)
2322
# cxxdeps dependency Catch2
2423
FetchContent_Declare(Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v3.5.1)
2524
FetchContent_MakeAvailable(Catch2)
26-
target_link_libraries(my_test PRIVATE Catch2::Catch2WithMain)
25+
target_link_libraries(my_test PRIVATE Catch2::Catch2WithMain)
26+
# finally, add all sources
27+
set(SOURCES
28+
)
29+
target_sources(demo5 PRIVATE ${SOURCES})
30+
target_sources(my_test PRIVATE ${SOURCES})

‎demo/project6/CMakeLists.txt

+9-6
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@ set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
77
Include(FetchContent)
88
add_definitions(-DMY_HELLO="ola mundo")
99
add_definitions(-DIS_TEST)
10-
set(SOURCES
11-
src/demo6.cpp
12-
src/demo6.cpp
13-
)
14-
add_executable(demo6 src/demo6.cpp ${SOURCES})
10+
# add all executables
11+
add_executable(demo6 src/demo6.cpp )
1512
add_library(my_headers0 INTERFACE)
1613
target_include_directories(my_headers0 INTERFACE inc)
1714
target_link_libraries(demo6 PRIVATE my_headers0)
@@ -33,4 +30,10 @@ target_link_libraries(demo6 PRIVATE absl::log_initialize)
3330
FetchContent_Declare(optframe GIT_REPOSITORY https://github.com/optframe/optframe.git GIT_TAG master)
3431
FetchContent_MakeAvailable(optframe)
3532
target_link_libraries(my_headers0 INTERFACE OptFrameAll)
36-
target_link_libraries(demo6 PRIVATE OptFrameAll)
33+
target_link_libraries(demo6 PRIVATE OptFrameAll)
34+
# finally, add all sources
35+
set(SOURCES
36+
src/demo6.cpp
37+
src/demo6.cpp
38+
)
39+
target_sources(demo6 PRIVATE ${SOURCES})

0 commit comments

Comments
 (0)
Please sign in to comment.