News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

create project given list of source files

Started by Beliavsky, January 08, 2018, 08:46:05 PM

Previous topic - Next topic

Beliavsky

I have a text file containing list of Fortran source files than can be compiled into an executable using gfortran. Can I create create a project file by importing this list rather than typing the source file names manually?

oBFusCATed

Nope, but you can write a script which adds the files from the list to an empty project.

See here for the apis: http://wiki.codeblocks.org/index.php/Scripting_commands#ProjectManager
(most of the time I ignore long posts)
[strangers don't send me private messages, I'll ignore them; post a topic in the forum, but first read the rules!]

Beliavsky

This Python script

infile = "list.txt"
lines = open(infile,"r").readlines()
print('"' + '" "'.join([line.strip() for line in lines]) + '"')

gives output such as

"foo.f90" "bar.f90" "main.f90"

which can then be pasted in the "File name:" box that appears when one clicks Project, add files.

BlueHazzard

#3
Codeblocks uses squirrel for scripting:  http://squirrel-lang.org/ it is close to lua, but with c like syntax.
You can run one line scripts with the script console: View->scrip console. In the bottom line you can enter commands, or running a .script file.

In your case i would run a script file with this content:

local arr =
[
"File 1.c",
"File 1.h",
"File 2.c",
"File 2.h"
];

local project = GetProjectManager().GetActiveProject();
foreach(i, fi in arr)
{
Log(_T(fi));
for(i = 0; i < project.GetBuildTargetsCount(); ++i)
GetProjectManager().AddFileToProject( _T(fi), project, i);
};
GetProjectManager().SaveProject(project);
Log(_T("Import finished"));


Edit: For the above script all files have to exist and be in the same folder as the project but you can use relative paths and absolute paths. To read a txt file ask or read the squirrel documentation
Edit2: The files are getting added to all targets of the project