64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								ceedling-subprojects
							 | 
						||
| 
								 | 
							
								====================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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   
							 | 
						||
| 
								 | 
							
								optimize for your situation.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								First, you're going to want to add the extension to your list of known extensions:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								:extension:
							 | 
						||
| 
								 | 
							
								  :subprojects: '.a'
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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  
							 | 
						||
| 
								 | 
							
								and a unique name.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								:subprojects:  
							 | 
						||
| 
								 | 
							
								  :paths:
							 | 
						||
| 
								 | 
							
								   - :name: libprojectA
							 | 
						||
| 
								 | 
							
								     :source:
							 | 
						||
| 
								 | 
							
								       - ./subprojectA/first/dir
							 | 
						||
| 
								 | 
							
								       - ./subprojectA/second/dir
							 | 
						||
| 
								 | 
							
								     :include:
							 | 
						||
| 
								 | 
							
								       - ./subprojectA/include/dir
							 | 
						||
| 
								 | 
							
								     :build_root: ./subprojectA/build/dir
							 | 
						||
| 
								 | 
							
								     :defines: 
							 | 
						||
| 
								 | 
							
								       - 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!
							 |