Skip to content

Commit b28c531

Browse files
author
Lixiaoyu
committed
[cmake:]fix the dependence to avoid generate files every time, even though no changed
1 parent 27a63fb commit b28c531

File tree

13 files changed

+210
-73
lines changed

13 files changed

+210
-73
lines changed

samples/monster/CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,29 @@ set(FBS_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_monster_fbs ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
10+
list(TRANSFORM FBS_FS
11+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
12+
OUTPUT_VARIABLE FBS_B_HS
13+
)
14+
list(TRANSFORM FBS_FS
15+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
16+
OUTPUT_VARIABLE FBS_R_HS
17+
)
18+
list(TRANSFORM FBS_FS
19+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
20+
OUTPUT_VARIABLE FBS_V_HS
21+
)
22+
1023
add_custom_command (
11-
TARGET gen_monster_fbs
24+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS}
1225
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1326
COMMAND flatcc_cli -a -o "${GEN_DIR}" "${FBS_DIR}/monster.fbs"
14-
DEPENDS flatcc_cli "${FBS_DIR}/monster.fbs"
27+
DEPENDS flatcc_cli "${FBS_FS}"
28+
COMMENT "Generate monster fbs headers"
1529
)
16-
add_executable(monster monster.c)
17-
add_dependencies(monster gen_monster_fbs)
30+
31+
add_executable(monster monster.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS})
1832
target_link_libraries(monster flatccrt)
1933

2034
if (FLATCC_TEST)

samples/reflection/CMakeLists.txt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,21 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/samples/monster")
1515

1616
include_directories("${GEN_DIR}" "${INC_DIR}")
1717

18-
add_custom_target(gen_monster_bfbs ALL)
18+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
19+
list(TRANSFORM FBS_FS
20+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1.bfbs"
21+
OUTPUT_VARIABLE FBS_BFBS
22+
)
23+
1924
add_custom_command (
20-
TARGET gen_monster_bfbs
25+
OUTPUT ${FBS_BFBS}
2126
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
2227
COMMAND flatcc_cli --schema -o "${GEN_DIR}" "${FBS_DIR}/monster.fbs"
23-
DEPENDS flatcc_cli "${FBS_DIR}/monster.fbs"
28+
DEPENDS flatcc_cli "${FBS_FS}"
29+
COMMENT "Generate bfbs2json fbs headers"
2430
)
25-
add_executable(bfbs2json bfbs2json.c)
26-
add_dependencies(bfbs2json gen_monster_bfbs)
31+
32+
add_executable(bfbs2json bfbs2json.c ${FBS_BFBS})
2733
target_link_libraries(bfbs2json flatccrt)
2834

2935
if (FLATCC_TEST)

test/emit_test/CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,29 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/test/emit_test")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_emit_test ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
10+
list(TRANSFORM FBS_FS
11+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
12+
OUTPUT_VARIABLE FBS_B_HS
13+
)
14+
list(TRANSFORM FBS_FS
15+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
16+
OUTPUT_VARIABLE FBS_R_HS
17+
)
18+
list(TRANSFORM FBS_FS
19+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
20+
OUTPUT_VARIABLE FBS_V_HS
21+
)
22+
1023
add_custom_command (
11-
TARGET gen_emit_test
24+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS}
1225
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1326
COMMAND flatcc_cli -a -o "${GEN_DIR}" "${FBS_DIR}/emit_test.fbs"
14-
DEPENDS flatcc_cli "${FBS}"
27+
DEPENDS flatcc_cli "${FBS_FS}"
28+
COMMENT "Generate emit_test fbs headers"
1529
)
16-
add_executable(emit_test emit_test.c)
17-
add_dependencies(emit_test gen_emit_test)
30+
31+
add_executable(emit_test emit_test.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS})
1832
target_link_libraries(emit_test flatccrt)
1933

2034
add_test(emit_test emit_test${CMAKE_EXECUTABLE_SUFFIX})

test/flatc_compat/CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,30 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/test/monster_test")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_flatc_compat ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
10+
list(TRANSFORM FBS_FS
11+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
12+
OUTPUT_VARIABLE FBS_B_HS
13+
)
14+
list(TRANSFORM FBS_FS
15+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
16+
OUTPUT_VARIABLE FBS_R_HS
17+
)
18+
list(TRANSFORM FBS_FS
19+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
20+
OUTPUT_VARIABLE FBS_V_HS
21+
)
22+
1023
add_custom_command (
11-
TARGET gen_flatc_compat
24+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS}
1225
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1326
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/monsterdata_test.mon" ${CMAKE_CURRENT_BINARY_DIR}
1427
COMMAND flatcc_cli -a -o "${GEN_DIR}" "${FBS_DIR}/monster_test.fbs"
15-
DEPENDS flatcc_cli "${FBS_DIR}/monster_test.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/include_test2.fbs"
28+
DEPENDS flatcc_cli "${FBS_FS}"
29+
COMMENT "Generate flatc_compat fbs headers"
1630
)
17-
add_executable(flatc_compat flatc_compat.c)
18-
add_dependencies(flatc_compat gen_flatc_compat)
31+
32+
add_executable(flatc_compat flatc_compat.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS})
1933
target_link_libraries(flatc_compat flatccrt)
2034

2135
add_test(flatc_compat flatc_compat${CMAKE_EXECUTABLE_SUFFIX})

test/json_test/CMakeLists.txt

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,42 @@ set(DATA_SRC "${PROJECT_SOURCE_DIR}/test/flatc_compat")
99

1010
include_directories("${GEN_DIR}" "${INC_DIR}")
1111

12-
add_custom_target(gen_monster_test_json ALL)
12+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
13+
list(TRANSFORM FBS_FS
14+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
15+
OUTPUT_VARIABLE FBS_B_HS
16+
)
17+
list(TRANSFORM FBS_FS
18+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
19+
OUTPUT_VARIABLE FBS_R_HS
20+
)
21+
list(TRANSFORM FBS_FS
22+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
23+
OUTPUT_VARIABLE FBS_V_HS
24+
)
25+
list(TRANSFORM FBS_FS
26+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_json_printer.h"
27+
OUTPUT_VARIABLE FBS_JPR_HS
28+
)
29+
list(TRANSFORM FBS_FS
30+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_json_parser.h"
31+
OUTPUT_VARIABLE FBS_JPA_HS
32+
)
33+
1334
add_custom_command (
14-
TARGET gen_monster_test_json
35+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS} ${FBS_JPR_HS} ${FBS_JPA_HS}
1536
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1637
COMMAND ${CMAKE_COMMAND} -E copy "${DATA_SRC}/monsterdata_test.golden" "${DATA_DST}"
1738
COMMAND ${CMAKE_COMMAND} -E copy "${DATA_SRC}/monsterdata_test.mon" "${DATA_DST}"
1839
COMMAND flatcc_cli -av --json -o "${GEN_DIR}" "${FBS_DIR}/monster_test.fbs"
19-
DEPENDS flatcc_cli "${FBS_DIR}/monster_test.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/include_test2.fbs"
40+
DEPENDS flatcc_cli "${FBS_FS}"
41+
COMMENT "Generate json_test fbs headers"
2042
)
2143

22-
add_executable(test_basic_parse test_basic_parse.c)
23-
add_executable(test_json_parser test_json_parser.c)
24-
add_executable(test_json_printer test_json_printer.c)
25-
add_executable(test_json test_json.c)
26-
27-
add_dependencies(test_basic_parse gen_monster_test_json)
28-
add_dependencies(test_json_parser gen_monster_test_json)
29-
add_dependencies(test_json_printer gen_monster_test_json)
30-
add_dependencies(test_json gen_monster_test_json)
44+
add_executable(test_basic_parse test_basic_parse.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS} ${FBS_JPR_HS} ${FBS_JPA_HS})
45+
add_executable(test_json_parser test_json_parser.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS} ${FBS_JPR_HS} ${FBS_JPA_HS})
46+
add_executable(test_json_printer test_json_printer.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS} ${FBS_JPR_HS} ${FBS_JPA_HS})
47+
add_executable(test_json test_json.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS} ${FBS_JPR_HS} ${FBS_JPA_HS})
3148

3249
target_link_libraries(test_basic_parse flatccrt)
3350
target_link_libraries(test_json_parser flatccrt)
@@ -51,8 +68,7 @@ set(RTSRC
5168
)
5269

5370
macro(jstest trg flags)
54-
add_executable(${trg} test_json.c ${RTSRC})
55-
add_dependencies(${trg} gen_monster_test_json)
71+
add_executable(${trg} test_json.c ${RTSRC} ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS} ${FBS_JPR_HS} ${FBS_JPA_HS})
5672
add_test(${trg} ${trg}${CMAKE_EXECUTABLE_SUFFIX})
5773
set_target_properties(${trg} PROPERTIES COMPILE_FLAGS ${flags})
5874
endmacro()

test/load_test/CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,29 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/test/monster_test")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_load_test ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
10+
list(TRANSFORM FBS_FS
11+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
12+
OUTPUT_VARIABLE FBS_B_HS
13+
)
14+
list(TRANSFORM FBS_FS
15+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
16+
OUTPUT_VARIABLE FBS_R_HS
17+
)
18+
list(TRANSFORM FBS_FS
19+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
20+
OUTPUT_VARIABLE FBS_V_HS
21+
)
22+
1023
add_custom_command (
11-
TARGET gen_load_test
24+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS}
1225
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1326
COMMAND flatcc_cli -a -o "${GEN_DIR}" "${FBS_DIR}/monster_test.fbs"
14-
DEPENDS flatcc_cli "${FBS_DIR}/monster_test.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/include_test2.fbs"
27+
DEPENDS flatcc_cli "${FBS_FS}"
28+
COMMENT "Generate load_test fbs headers"
1529
)
16-
add_executable(load_test load_test.c)
17-
add_dependencies(load_test gen_load_test)
30+
31+
add_executable(load_test load_test.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS})
1832
target_link_libraries(load_test flatccrt)
1933

2034
add_test(load_test load_test${CMAKE_EXECUTABLE_SUFFIX})

test/monster_test/CMakeLists.txt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,29 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/test/monster_test")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_monster_test ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
10+
list(TRANSFORM FBS_FS
11+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
12+
OUTPUT_VARIABLE FBS_B_HS
13+
)
14+
list(TRANSFORM FBS_FS
15+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
16+
OUTPUT_VARIABLE FBS_R_HS
17+
)
18+
list(TRANSFORM FBS_FS
19+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
20+
OUTPUT_VARIABLE FBS_V_HS
21+
)
22+
1023
add_custom_command (
11-
TARGET gen_monster_test
24+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS}
1225
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1326
COMMAND flatcc_cli -a -o "${GEN_DIR}" "${FBS_DIR}/monster_test.fbs"
14-
DEPENDS flatcc_cli "${FBS_DIR}/monster_test.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/include_test2.fbs"
27+
DEPENDS flatcc_cli "${FBS_FS}"
28+
COMMENT "Generate monster_test fbs headers"
1529
)
16-
add_executable(monster_test monster_test.c)
17-
add_dependencies(monster_test gen_monster_test)
30+
31+
add_executable(monster_test monster_test.c ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS})
1832
target_link_libraries(monster_test flatccrt)
1933

2034
add_test(monster_test monster_test${CMAKE_EXECUTABLE_SUFFIX})

test/monster_test_concat/CMakeLists.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/test/monster_test")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_monster_test_concat ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
10+
1011
add_custom_command (
11-
TARGET gen_monster_test_concat
12+
OUTPUT ${GEN_DIR}/monster_test.h
1213
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1314
# We could also use the recursive -r option, but this tests adding files manually to the output file.
14-
COMMAND flatcc_cli -cwv --reader -o "${GEN_DIR}" "--outfile=monster_test.h" "${FBS_DIR}/attributes.fbs" "${FBS_DIR}/include_test2.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/monster_test.fbs" DEPENDS flatcc_cli "${FBS_DIR}/monster_test.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/include_test2.fbs" "${FBS_DIR}/attributes.fbs"
15+
COMMAND flatcc_cli -cwv --reader -o "${GEN_DIR}" "--outfile=monster_test.h" "${FBS_DIR}/attributes.fbs" "${FBS_DIR}/include_test2.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/monster_test.fbs"
16+
DEPENDS flatcc_cli "${FBS_FS}"
17+
COMMENT "Generate monster_test_concat fbs headers"
1518
)
19+
1620
include_directories("${GEN_DIR}" "${INC_DIR}")
17-
add_executable(monster_test_concat monster_test_concat.c)
18-
add_dependencies(monster_test_concat gen_monster_test_concat)
21+
add_executable(monster_test_concat monster_test_concat.c ${GEN_DIR}/monster_test.h)
1922
target_link_libraries(monster_test_concat flatccrt)
2023

2124
add_test(monster_test_concat monster_test_concat${CMAKE_EXECUTABLE_SUFFIX})

test/monster_test_cpp/CMakeLists.txt

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,29 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/samples/monster")
99

1010
include_directories("${GEN_DIR}" "${INC_DIR}")
1111

12-
add_custom_target(gen_monster_test_cpp ALL)
12+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
13+
list(TRANSFORM FBS_FS
14+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_builder.h"
15+
OUTPUT_VARIABLE FBS_B_HS
16+
)
17+
list(TRANSFORM FBS_FS
18+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_reader.h"
19+
OUTPUT_VARIABLE FBS_R_HS
20+
)
21+
list(TRANSFORM FBS_FS
22+
REPLACE "${FBS_DIR}/(.*)\\.fbs$" "${GEN_DIR}/\\1_verifier.h"
23+
OUTPUT_VARIABLE FBS_V_HS
24+
)
25+
1326
add_custom_command (
14-
TARGET gen_monster_test_cpp
27+
OUTPUT ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS}
1528
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1629
COMMAND flatcc_cli -a -o "${GEN_DIR}" "${FBS_DIR}/monster.fbs"
17-
DEPENDS flatcc_cli "${FBS_DIR}/monster.fbs"
30+
DEPENDS flatcc_cli "${FBS_FS}"
31+
COMMENT "Generate monster_test_cpp fbs headers"
1832
)
1933

20-
add_executable(monster_test_cpp monster_test.cpp)
21-
add_dependencies(monster_test_cpp gen_monster_test_cpp)
34+
add_executable(monster_test_cpp monster_test.cpp ${FBS_B_HS} ${FBS_R_HS} ${FBS_V_HS})
2235
target_link_libraries(monster_test_cpp flatccrt)
2336

2437
add_test(monster_test_cpp monster_test_cpp${CMAKE_EXECUTABLE_SUFFIX})

test/monster_test_prefix/CMakeLists.txt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@ set(FBS_DIR "${PROJECT_SOURCE_DIR}/test/monster_test")
66

77
include_directories("${GEN_DIR}" "${INC_DIR}")
88

9-
add_custom_target(gen_monster_test_prefix ALL)
9+
file(GLOB FBS_FS ${FBS_DIR}/*.fbs)
1010
add_custom_command (
11-
TARGET gen_monster_test_prefix
11+
OUTPUT ${GEN_DIR}/zzz_monster_test.h
1212
COMMAND ${CMAKE_COMMAND} -E make_directory "${GEN_DIR}"
1313
COMMAND flatcc_cli -a --prefix=zzz_ --stdout "${FBS_DIR}/monster_test.fbs" > "${GEN_DIR}/zzz_monster_test.h"
14-
DEPENDS flatcc_cli "${FBS_DIR}/monster_test.fbs" "${FBS_DIR}/include_test1.fbs" "${FBS_DIR}/include_test2.fbs"
14+
DEPENDS flatcc_cli "${FBS_FS}"
15+
COMMENT "Generate monster_test_prefix fbs headers"
1516
)
16-
add_executable(monster_test_prefix monster_test_prefix.c)
17-
add_dependencies(monster_test_prefix gen_monster_test_prefix)
17+
18+
19+
add_executable(monster_test_prefix monster_test_prefix.c ${GEN_DIR}/zzz_monster_test.h)
1820
target_link_libraries(monster_test_prefix flatccrt)
1921

2022
add_test(monster_test_prefix monster_test_prefix${CMAKE_EXECUTABLE_SUFFIX})

0 commit comments

Comments
 (0)