| 
									
										
										
										
											2019-06-10 16:18:27 +07:00
										 |  |  | ceedling-subprojects | 
					
						
							|  |  |  | ==================== | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | Plugin for supporting subprojects that are built as static libraries. It continues to support | 
					
						
							|  |  |  | dependency tracking, without getting confused between your main project files and your | 
					
						
							|  |  |  | subproject files. It accepts different compiler flags and linker flags, allowing you to | 
					
						
							| 
									
										
										
										
											2019-06-10 16:18:27 +07:00
										 |  |  | optimize for your situation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | First, you're going to want to add the extension to your list of known extensions: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | :extension: | 
					
						
							|  |  |  |   :subprojects: '.a' | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | Define a new section called :subprojects. There, you can list as many subprojects | 
					
						
							|  |  |  | as you may need under the :paths key. For each, you specify a unique place to build | 
					
						
							| 
									
										
										
										
											2019-06-10 16:18:27 +07:00
										 |  |  | and a unique name. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  | :subprojects: | 
					
						
							| 
									
										
										
										
											2019-06-10 16:18:27 +07:00
										 |  |  |   :paths: | 
					
						
							|  |  |  |    - :name: libprojectA | 
					
						
							|  |  |  |      :source: | 
					
						
							|  |  |  |        - ./subprojectA/first/dir | 
					
						
							|  |  |  |        - ./subprojectA/second/dir | 
					
						
							|  |  |  |      :include: | 
					
						
							|  |  |  |        - ./subprojectA/include/dir | 
					
						
							|  |  |  |      :build_root: ./subprojectA/build/dir | 
					
						
							| 
									
										
										
										
											2023-03-17 16:12:49 +07:00
										 |  |  |      :defines: | 
					
						
							| 
									
										
										
										
											2019-06-10 16:18:27 +07:00
										 |  |  |        - DEFINE_JUST_FOR_THIS_FILE | 
					
						
							|  |  |  |        - AND_ANOTHER | 
					
						
							|  |  |  |    - :name: libprojectB | 
					
						
							|  |  |  |      :source: | 
					
						
							|  |  |  |        - ./subprojectB/only/dir | 
					
						
							|  |  |  |      :include: | 
					
						
							|  |  |  |        - ./subprojectB/first/include/dir | 
					
						
							|  |  |  |        - ./subprojectB/second/include/dir | 
					
						
							|  |  |  |      :build_root: ./subprojectB/build/dir | 
					
						
							|  |  |  |      :defines: [] #none for this one | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can specify the compiler and linker, just as you would a release build: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | :tools: | 
					
						
							|  |  |  |   :subprojects_compiler: | 
					
						
							|  |  |  |     :executable: gcc | 
					
						
							|  |  |  |     :arguments: | 
					
						
							|  |  |  |       - -g | 
					
						
							|  |  |  |       - -I"$": COLLECTION_PATHS_SUBPROJECTS | 
					
						
							|  |  |  |       - -D$: COLLECTION_DEFINES_SUBPROJECTS | 
					
						
							|  |  |  |       - -c "${1}" | 
					
						
							|  |  |  |       - -o "${2}" | 
					
						
							|  |  |  |   :subprojects_linker: | 
					
						
							|  |  |  |     :executable: ar | 
					
						
							|  |  |  |     :arguments: | 
					
						
							|  |  |  |       - rcs | 
					
						
							|  |  |  |       - ${2} | 
					
						
							|  |  |  |       - ${1} | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | That's all there is to it! Happy Hacking! |