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! |