Skip to content

Commit 5c05c52

Browse files
authored
have a better function to generate the mocked file content (#370)
1 parent b0494a2 commit 5c05c52

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

CMakeLists.txt

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,35 +92,36 @@ function(add_mock_library LIBRARY_NAME)
9292
set(MOCKS_HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_mocks.h)
9393
set(MOCKS_SOURCE_FILE ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}_mocks.c)
9494

95-
file(WRITE ${MOCKS_HEADER_FILE} "// Copyright (c) Microsoft. All rights reserved.\n")
96-
file(APPEND ${MOCKS_HEADER_FILE} "// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n")
97-
file(APPEND ${MOCKS_HEADER_FILE} "// THIS IS A GENERATED FILE, DO NOT EDIT. It was generated using function add_mock_library from CMakeLists.txt in umock-c.\n\n")
98-
file(APPEND ${MOCKS_HEADER_FILE} "#ifndef ${LIBRARY_NAME_UPPER}_MOCKS_H\n")
99-
file(APPEND ${MOCKS_HEADER_FILE} "#define ${LIBRARY_NAME_UPPER}_MOCKS_H\n\n")
95+
set(MOCKS_HEADER_CONTENT "// Copyright (c) Microsoft. All rights reserved.\n")
96+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n")
97+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}// THIS IS A GENERATED FILE, DO NOT EDIT. It was generated using function add_mock_library from CMakeLists.txt in umock-c.\n\n")
98+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#ifndef ${LIBRARY_NAME_UPPER}_MOCKS_H\n")
99+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#define ${LIBRARY_NAME_UPPER}_MOCKS_H\n\n")
100100

101-
file(APPEND ${MOCKS_HEADER_FILE} "#define ENABLE_MOCKS\n")
102-
file(APPEND ${MOCKS_HEADER_FILE} "#define ENABLE_MOCKS_DECL\n")
101+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#define ENABLE_MOCKS\n")
102+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#define ENABLE_MOCKS_DECL\n")
103103

104104
foreach(HEADER_FILE ${ARG_HEADER_FILES})
105-
file(APPEND ${MOCKS_HEADER_FILE} "#include \"${HEADER_FILE}\"\n")
105+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#include \"${HEADER_FILE}\"\n")
106106
endforeach()
107107

108-
file(APPEND ${MOCKS_HEADER_FILE} "#undef ENABLE_MOCKS_DECL\n")
109-
file(APPEND ${MOCKS_HEADER_FILE} "#undef ENABLE_MOCKS\n\n")
108+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#undef ENABLE_MOCKS_DECL\n")
109+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#undef ENABLE_MOCKS\n\n")
110110

111-
file(APPEND ${MOCKS_HEADER_FILE} "#endif // ${LIBRARY_NAME_UPPER}_MOCKS_H\n")
111+
set(MOCKS_HEADER_CONTENT "${MOCKS_HEADER_CONTENT}#endif // ${LIBRARY_NAME_UPPER}_MOCKS_H\n")
112112

113+
file(WRITE ${MOCKS_HEADER_FILE} ${MOCKS_HEADER_CONTENT})
113114

114-
file(WRITE ${MOCKS_SOURCE_FILE} "// Copyright (c) Microsoft. All rights reserved.\n")
115-
file(APPEND ${MOCKS_SOURCE_FILE} "// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n")
116-
file(APPEND ${MOCKS_SOURCE_FILE} "// THIS IS A GENERATED FILE, DO NOT EDIT. It was generated using function add_mock_library from CMakeLists.txt in umock-c.\n\n")
117-
file(APPEND ${MOCKS_SOURCE_FILE} "#define ENABLE_MOCKS\n")
115+
set(MOCKS_SOURCE_CONTENT "// Copyright (c) Microsoft. All rights reserved.\n")
116+
set(MOCKS_SOURCE_CONTENT "${MOCKS_SOURCE_CONTENT}// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n")
117+
set(MOCKS_SOURCE_CONTENT "${MOCKS_SOURCE_CONTENT}// THIS IS A GENERATED FILE, DO NOT EDIT. It was generated using function add_mock_library from CMakeLists.txt in umock-c.\n\n")
118+
set(MOCKS_SOURCE_CONTENT "${MOCKS_SOURCE_CONTENT}#define ENABLE_MOCKS\n")
118119
foreach(HEADER_FILE ${ARG_HEADER_FILES})
119-
#note: if CMAKE error "file failed to open for writing (Permission denied):" around these lines "... then just close Visual Studio.
120-
#it seems Visual Studio is aggressively scanning precompiled headers and CMake might find the file being opened by cl.exe
121-
file(APPEND ${MOCKS_SOURCE_FILE} "#include \"${HEADER_FILE}\"\n")
120+
set(MOCKS_SOURCE_CONTENT "${MOCKS_SOURCE_CONTENT}#include \"${HEADER_FILE}\"\n")
122121
endforeach()
123-
file(APPEND ${MOCKS_SOURCE_FILE} "#undef ENABLE_MOCKS\n")
122+
set(MOCKS_SOURCE_CONTENT "${MOCKS_SOURCE_CONTENT}#undef ENABLE_MOCKS\n")
123+
124+
file(WRITE ${MOCKS_SOURCE_FILE} ${MOCKS_SOURCE_CONTENT})
124125

125126
set_source_files_properties(${MOCKS_SOURCE_FILE} PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
126127

0 commit comments

Comments
 (0)