in src/langs/cpp/package_info.js [217:268]
generateExternal() {
// generate external/CMakeLists.txt
let tmpl_path = this.config.withTest ?
path.join(__dirname, './files/external/CMakeLists.txt.test.tmpl') :
path.join(__dirname, './files/external/CMakeLists.txt.tmpl');
this.addGlobalPackage();
let keys = Object.keys(this.dependencies);
let libraries = '';
if (keys.length > 0) {
keys.forEach(key => {
const item = this.dependencies[key];
const meta = item.meta;
if (_isExcludePackage(item.scope, meta.name)) {
return;
}
const res = this.resolveGitInfo(meta);
if (false !== res) {
const { package_name, git_link, git_tag } = this.resolveGitInfo(meta);
if (!_contain(this.imports, package_name)) {
this.renderAuto(
tmpl_path,
path.join(this.config.dir, `external/${package_name}/CMakeLists.txt`), {
package_name: package_name,
git_link: git_link,
git_tag: git_tag,
project_name: this.project_name
}
);
libraries += `add_subdirectory(${package_name})${os.EOL}`;
this.imports.push(package_name);
}
}
});
}
this.renderContent(
'message(STATUS "Install libraries")\n${libraries}${libraries_dev}',
path.join(this.config.dir, 'external/CMakeLists.txt'), {
libraries: libraries,
libraries_dev: this.config.withTest ? 'if (ENABLE_UNIT_TESTS)\n add_subdirectory(googletest)\nendif()\n' : ''
}
);
if (this.config.withTest) {
this.renderAuto(
path.join(__dirname, './files/external/googletest.CMakeLists.txt.tmpl'),
path.join(this.config.dir, 'external/googletest/CMakeLists.txt'), {}
);
this.renderAuto(
path.join(__dirname, './files/external/googletest.CMakeLists.txt.in.tmpl'),
path.join(this.config.dir, 'external/googletest/CMakeLists.txt.in'), {}
);
}
}