buildtarget.tcl
来自「This Source-Navigator, an IDE for C/C++/」· TCL 代码 · 共 711 行 · 第 1/2 页
TCL
711 行
# We don't need to set it since we know # we can guess it. set LinkerApplication "" } else { set LinkerApplication ${linker} } } method GuessProjectType {} { set tchain_obj [GetToolChainObject ${ToolChain}] set JavaFiles 0 set CPPFiles 0 set CFiles 0 foreach file ${SrcFiles} { switch [${tchain_obj} GetFileType ${file}] { JAVA { incr JavaFiles } CPP { incr CPPFiles } CC { incr CFiles } } } if {${JavaFiles}!=0} { return JAVA } if {${CPPFiles}!=0} { return CPP } # NB: The file type might be UNKNOWN but return CC anyway. return CC } method GetLinkerLocation {} { set tchain_obj [GetToolChainObject ${ToolChain}] if {${LinkerApplication}==""} { set projecttype [GuessProjectType] if {${TargetType}=="Executable"} { set tool [GetTool ${projecttype}] } else { #Must be a library then. set tool [${tchain_obj} GetLibLinkerTool] } if {${tool}==""} { set tchain_obj [GetToolChainObject ${ToolChain}] set tool [GetTool ${projecttype}] } return ${tool} } return ${LinkerApplication} } method SetLaunchWithDebugger {use_debugger} { set LaunchDebugger ${use_debugger} } method GetLaunchWithDebugger {} { if {${LaunchDebugger}==""} { set LaunchDebugger 0 } return ${LaunchDebugger} } method LoadData {{target_name ""}} { sn_log "IDE_DEBUG(snBuildTarget::LoadData)" if {${target_name}!=""} { set TargetName ${target_name} } # Get user custom/client data. set userToolChainData [paf_db_proj get -key "IDEUserData${TargetName}"] # Get Build Directory set BuildDir [paf_db_proj get -key "IDEBuildDir${TargetName}"] # Get Target Type set db_target_type [paf_db_proj get -key "IDETargetType${TargetName}"] if {${db_target_type}!=""} { set TargetType ${db_target_type} } # Get Tool Chain set ToolChain [paf_db_proj get -key "IDEToolChain${TargetName}"] # Get Source Files set SrcFiles [paf_db_proj get -key "IDESourceFiles${TargetName}"] # Get the link output file name. set OutputFilename [paf_db_proj get -key "IDELinkOutFile${TargetName}"] # Get the user linker flags. set UserLinkFlags [paf_db_proj get\ -key "IDEUserLinkerFlags${TargetName}"] # Get the link entry point. set LinkerEntryPoint [paf_db_proj get\ -key "IDELinkEntryPoint${TargetName}"] # Get the link command/executable set LinkerApplication [paf_db_proj get\ -key "IDELinkerApplication${TargetName}"] # Get the defines list # TODO: Get rule type from toolchain foreach ruletype "CC CPP JAVA" { set Defines(${ruletype}) [paf_db_proj get\ -key "IDEMacroDefines${ruletype}${TargetName}"] } # Get Auto Generated Includes. set IncludesAuto(CC) [paf_db_proj get\ -key "IDEGenIncludesCC${TargetName}"] set IncludesAuto(CPP) [paf_db_proj get\ -key "IDEGenIncludesCPP${TargetName}"] set IncludesAuto(JAVA) [paf_db_proj get\ -key "IDEGenIncludesJAVA${TargetName}"] # Get User specified Includes. set IncludesUser(CC) [paf_db_proj get\ -key "IDEUserIncludesCC${TargetName}"] set IncludesUser(CPP) [paf_db_proj get\ -key "IDEUserIncludesCPP${TargetName}"] set IncludesUser(JAVA) [paf_db_proj get\ -key "IDEUserIncludesJAVA${TargetName}"] # Get Launch with debugger flag. set LaunchDebugger [paf_db_proj get\ -key "IDEUseDebuggerOnLaunch${TargetName}"] set LaunchCommandLine [paf_db_proj get\ -key "IDELaunchCommandLine${TargetName}"] set NeedsRebuild [paf_db_proj get -key "IDENeedsRebuild${TargetName}"] if {${NeedsRebuild} == ""} { set NeedsRebuild 0 } LoadToolChainFlags # Load Rule Status settings. LoadRuleStatus # Get Librarys to linked against. set LibFiles [paf_db_proj get -key "IDELibFiles${TargetName}"] paf_db_proj sync } method SaveData {{target_name ""}} { sn_log "IDE_DEBUG(snBuildTarget::SaveData)" if {${target_name}!=""} { set TargetName ${target_name} } # Store user custom/client data. paf_db_proj put "IDEUserData${TargetName}" ${userToolChainData} # Store Build Directory paf_db_proj put "IDEBuildDir${TargetName}" ${BuildDir} # Store Target Type paf_db_proj put "IDETargetType${TargetName}" ${TargetType} # Store Tool Chain paf_db_proj put "IDEToolChain${TargetName}" ${ToolChain} # Store Source Files paf_db_proj put "IDESourceFiles${TargetName}" ${SrcFiles} # Store the link output file name. paf_db_proj put "IDELinkOutFile${TargetName}" ${OutputFilename} # Store the user linker flags. paf_db_proj put "IDEUserLinkerFlags${TargetName}" ${UserLinkFlags} # Store the link entry point. paf_db_proj put "IDELinkEntryPoint${TargetName}" ${LinkerEntryPoint} # Store the link command/executable paf_db_proj put "IDELinkerApplication${TargetName}" $LinkerApplication # Store the defines list # TODO: Get rule type from toolchain foreach ruletype "CC CPP JAVA" { paf_db_proj put\ "IDEMacroDefines${ruletype}${TargetName}" $Defines(${ruletype}) } # Store Auto Generated Includes. paf_db_proj put "IDEGenIncludesCC${TargetName}" $IncludesAuto(CC) paf_db_proj put "IDEGenIncludesCPP${TargetName}" $IncludesAuto(CPP) paf_db_proj put "IDEGenIncludesJAVA${TargetName}" $IncludesAuto(JAVA) # Store User specified Includes. paf_db_proj put "IDEUserIncludesCC${TargetName}" $IncludesUser(CC) paf_db_proj put "IDEUserIncludesCPP${TargetName}" $IncludesUser(CPP) paf_db_proj put "IDEUserIncludesJAVA${TargetName}" $IncludesUser(JAVA) # Save ToolChain flags. SaveToolChainFlags # Save Rule Status settings. SaveRuleStatus # Store Launch with debugger flag. paf_db_proj put "IDEUseDebuggerOnLaunch${TargetName}" ${LaunchDebugger} paf_db_proj put "IDELaunchCommandLine${TargetName}" ${LaunchCommandLine} paf_db_proj put "IDENeedsRebuild${TargetName}" ${NeedsRebuild} # Store Librarys to linked against. paf_db_proj put "IDELibFiles${TargetName}" ${LibFiles} paf_db_proj sync } method DeleteData {{target_name ""}} { sn_log "IDE_DEBUG(snBuildTarget::DeleteData)" if {${target_name}!=""} { set TargetName ${target_name} } # Delete user custom/client data. paf_db_proj delete "IDEUserData${TargetName}" # Delete Build Directory paf_db_proj delete "IDEBuildDir${TargetName}" # Delete Target Type paf_db_proj delete "IDETargetType${TargetName}" # Delete Tool Chain paf_db_proj delete "IDEToolChain${TargetName}" # delete Source Files paf_db_proj delete "IDESourceFiles${TargetName}" # delete the link output file name. paf_db_proj delete "IDELinkOutFile${TargetName}" # delete the user linker flags. paf_db_proj delete "IDEUserLinkerFlags${TargetName}" # delete the link entry point. paf_db_proj delete "IDELinkEntryPoint${TargetName}" # delete the link command/executable paf_db_proj delete "IDELinkerApplication${TargetName}" # delete the defines list # TODO: Get rule type from toolchain foreach ruletype "CC CPP JAVA" { paf_db_proj delete "IDEMacroDefines${ruletype}${TargetName}" } # delete Auto Generated Includes. paf_db_proj delete "IDEGenIncludesCC${TargetName}" paf_db_proj delete "IDEGenIncludesCPP${TargetName}" paf_db_proj delete "IDEGenIncludesJAVA${TargetName}" # delete User specified Includes. paf_db_proj delete "IDEUserIncludesCC${TargetName}" paf_db_proj delete "IDEUserIncludesCPP${TargetName}" paf_db_proj delete "IDEUserIncludesJAVA${TargetName}" DeleteToolChainFlags # Delete Rule Status settings. DeleteRuleStatus # Delete Launch with debugger flag. paf_db_proj delete "IDEUseDebuggerOnLaunch${TargetName}" paf_db_proj delete "IDELaunchCommandLine${TargetName}" paf_db_proj delete "IDENeedsRebuild${TargetName}" # delete Librarys to linked against. paf_db_proj delete "IDELibFiles${TargetName}" paf_db_proj sync } method SaveToolChainFlags {} { set flagkeys [array names ToolChainFlags] paf_db_proj put "IDEFlagKeys${TargetName}" ${flagkeys} foreach flagkey ${flagkeys} { paf_db_proj put\ "IDEFlagKey_${flagkey}${TargetName}" $ToolChainFlags(${flagkey}) } } method LoadToolChainFlags {} { set flagkeys [paf_db_proj get -key "IDEFlagKeys${TargetName}"] foreach flagkey ${flagkeys} { set ToolChainFlags(${flagkey}) [paf_db_proj get\ -key "IDEFlagKey_${flagkey}${TargetName}"] } } method DeleteToolChainFlags {} { set flagkeys [paf_db_proj get -key "IDEFlagKeys${TargetName}"] paf_db_proj delete "IDEFlagKeys${TargetName}" foreach flagkey ${flagkeys} { paf_db_proj delete "IDEFlagKey_${flagkey}${TargetName}" } } method SaveRuleStatus {} { set rulestatuskeys [array names ruleStatus] # Only Save the disabled rules. set disabledRules "" foreach rulestat ${rulestatuskeys} { if {[GetRuleStatus ${rulestat}]=="Disabled"} { set disabledRules "${disabledRules} ${rulestat}" } } paf_db_proj put "IDEDisabledRules${TargetName}" ${disabledRules} } method LoadRuleStatus {} { set rulestatuskeys [paf_db_proj get\ -key "IDEDisabledRules${TargetName}"] foreach rulestat ${rulestatuskeys} { set ruleStatus(${rulestat}) "Disabled" } } method DeleteRuleStatus {} { paf_db_proj delete "IDEDisabledRules${TargetName}" }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?