Eclipse (CDT) not running Builder - eclipse

I have a C-project (in Eclipse 2020-09 4.17.0) where I want to run a Web-Builder (a simple batch file which called from a cmd-shell works fine) before running the C-Compiler.
The Web-Builder is supposed to look into three different folders (one outside the project, two inside the project) and process the HTML files found there into C-Code.
Therefore I set the Web-Builders options to Refresh the entire project after building and specified the three directories as Resource in the Build Options.
I activated all 4 checkboxes (run after clean, automatic and so on).
BUT: The builder is NOT run if I modify a file in the latter two directories. It is only run if I change one of the files in the first directory (the uppermost directory in the build options).
If I now change the Build-Options such that not the complete first directory but only its files are part of the specified resources, now I can change a file in the second directory and the first directory to get the Builder executed. But any modification of a file in the third directory will not trigger the rebuild.
If I now further modify the Build-Options such that not the second directory but only its files are part of the specified resources, now I can change a file in the third directory and the first two directories to get the Builder executed.
But actually, this is a nasty hack as any additional file added to one of the directories will now go under the radar and will not trigger rebuilds as any sane author will not guess, that he has to go to some hidden Builder -> Build Options -> Specify Resources to get the new file into the build process. Probably he/she/they would activate the whole directory instead again and thus inhibit further proper build processes.
HOW can I make Eclipse process all three directories correctly?
EDIT: Issue is also in Eclipse 2022-12.

Related

Specify Eclipse CDT Default Launch Config

PAIN POINT:
Using Eclipse CDT - the launch configs I need are rather complex (little settings that are non-default values and other misc things) too many little things to remember, and easy to skip then stuff does not work. I want to be able to semi-automate this process in project makefiles.
Background:
I have multiple projects, not stored in the workspace (my users "import the project"). In some cases projects are some what generated (they are external makefile projects.
Requirement: Specifically depending on what build configuration is required the launch config needs to change/tweak, the external Makefile can do that, or I can create one launch file for each config. Or I can pre-populate them when I create the project
[example is normal development, debug/release but with unit-test variations]
The user might tweak the settings of course and want to save them.
Requirement: So that the launch files "travel with the project" - I want to check the into GIT, thus I want the .launch files kept in the same directory as the .project and .cproject files - as described here (thus they can be checked in and things are "self contained)
Store run configuration with project in Eclipse
PROBLEMS and QUESTIONS
1) Given existing launch configurations files (.launch files) in the ".project" directory, how can I browse/select from the list of existing ones that Eclipse does seem to previously know about.
{Example: Create a launch config called "FOO", copy this to "BAR", edit the BAR config file, replacing internal occurrences of FOO with BAR)
The BROWSE button in the "common" tab lets me select a directory to save but does not allow me to select an existing file
2) How can I tell eclipse File (X) is the default launch configuration for this project, or config(X) uses file(A) and config(Y) uses file (B)
3) Is there a way within the ".project" or ".config" or ".cproject" files to specify where to look for launch configurations, where to offer them?
4) Sure would be nice to have a file (or place in the .project, or .cproject) file that says: Launch configs for this project are in this directory - offer the user a list based on the files present in that directory
bottom line:
I'm sort of stuck - I can create launch files "correctly" with all required settings but I seem to have no means to tell Eclipse to use select/use them.
No amount of automation here seems to work, and I end up having to go back to manually creating and humanly forgetting settings in the project files.
Places I've looked:
Sort of the issue but not exactly
https://superuser.com/questions/521537/remove-launch-from-run-debug-drop-down-in-eclipse
Below - ARM describes the IMPORT process, but in my case all ".launch" files are grayed out and not selectable I don't know why and that is a different problem
I'd like to not make this a multi-step process - also see above about removing stale launch configs - you end up with too many launch configs in the history.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0446h/CJADBBIA.html
There are numerous other places but all seem to be "click here" or "use this menu item" and not addressing the external file issue.

Eclipse CDT: Custom builder disappears after clean

I have imported a CMake project into Eclipse CDT following the instructions in this question, specifically this answer.
This works well unless I make changes to the makefiles – they will not be picked up automatically. The file in question was Makefile.am, which is used for custom build commands to convert SVG files into PNG files of predefined size. I had added a few svgs += blah.svg lines.
Re-running the cmake command in the original answer fixed things.
I tried to automate this step by creating a custom builder that would run cmake at the start of each build. This worked well on a test run, but after cleaning the project once, my custom builder is gone. Moerover, when I try to recreate it (with the same name), I get the error message
A 'Program' configuration with this name already exists
Why does the custom builder get deleted? Why is it still lurking around somewhere (resulting in the name still appearing to be in use)? What can I do about it?
UPDATE:
Closer investigation (using git to track changes to the workspace) revealed the following:
The custom builder definition is stored in a file in project_dir/.externalToolsBuilders/builder_name.launch, where project_dir is the project directory and builder_name is the name of the custom builder.
A reference to the custom builder is added to project_dir/.project.
Cleaning leaves the .launch file but removes the entry in .project.
This explains the behavior: without the entry in .project, the custom builder will not show in the Builders dialog and not run as is it no longer associated with the project. But since the file for the builder definition still exists, Eclipse cannot add another builder of the same name.
The culprit is thus clearly Eclipse, not cmake, as the changes occur outside of the directory structure which cmake would touch.
The question then is: how can I prevent Eclipse from messing with my custom builders on clean?

Folding files in the navigation bar in webstorm

Iam using Webstorm for a project that uses coffeescript and Sass. In the navigation bar, I see coffeescript files along with the compiled js and map files. In the same way I see css files with the scss files. I want to be able to fold js and map files inside the corresponding coffee file for ease of navigation. I am not sure how to fix the settings for this. I want the same for scss and css files.
Yes,you can!
After google for hours,I find the answer.
Select such file(s)/folder(s) in Project View panel
"Help | Find Action" (Ctrl + Shift + A), activate check box for better results
Search for "run file watchers" (without quotes, obviously) and choose Run File Watchers entry.
see more:
PHPStorm - Run Filewatcher on existing files?
You cannot do this manually (i.e. any files you want at any time).
It's done automatically by File Watcher plugin. So .. if your *.coffee files are compiled in WebStorm by using File Watcher .. then it should be working/done automatically.
If you have File Watcher already set up -- delete intermediate files (.js/.map) and force run that file watcher.
Such grouping works if those extra files were generated after running File Watcher. IDE checks for new files and compares them with file watcher settings (Output paths to refresh field, I believe) -- based on that it creates such folding.
External file watcher (i.e. grunt-contrib-watch) is executed autonomous of IDE's File Watcher .. therefore such files will not be "grouped".
Related tickets (those few that I'm aware of) that ask about additional settings to be able to create such nesting/grouping manually:
http://youtrack.jetbrains.com/issue/WEB-8658
http://youtrack.jetbrains.com/issue/WEB-7635
http://youtrack.jetbrains.com/issue/IDEA-113347
UPDATE 2017/08/10:
As of 2016.3.x version such grouping/nesting is no longer relies on File Watchers -- it has special hard-coded rules for most common scenarios.
As of 2017.2 such rules are editable and available via Project View panel settings.

eclipse build automatically modify

I'd like eclipse to only run make in the directory the current file belongs to, not for the entire project. This becomes more important since the project is very big and make on the top level takes around 20 minutes. most of it is entering-leaving directories and checking if build is needed etc. So I have to manually open the directory in cmd and run make. So I'd like eclipse to do this in its build automatically process. Is that possible?
Try to play with Build directory option found in project properties -> C/C++ Build -> Builder Settings tab. The default value there is ${workspace_loc:/your_project}. However Eclipse provides rich set of predefined variables (see under Variables... button). Probably most interesting for you are these ones:
build_files
Returns the set of absolute file system paths whose modification caused the current build. A list of the characters, 'a' (added), 'c' (changed), 'r' (removed), 'f' (files only), 'd' (directories only), can be supplied as an argument to limit the file list to just those types of deltas. Defaults to all deltas.
selected_resource_loc
Returns the absolute file system path of the selected resource.
Other places where you could try to use these variables are Make build target options in Behaviour tab.
If you can add your build step to the External tools configuration, you could create a manual builder from that.
The External tools configurations are set similarly as the Run configurations, but allow executing different kind of steps (e.g. shell, Ant - I am reasonably sure, make-files can also be supported, but I don't use them - if not, then you can add a shell script that runs the make-file).
To set this up you have to go to the project properties (Right click on the project, select Properties), then go to the Builders page, and add a new builder, that is created from an External tool configuration.
I hope I was clear enough for this to work.
Select your project, open Properties -> Builders. Uncheck the builders that you don't want to run automatically anymore. Hit "New..." and select "External Program".
Now you can specify what command shall be run automatically each time the project is built. To have the parent directory of the currently selected file as an argument for your build command, you may use ${selected_resource_loc}\... See the Variables button for more such place holders that can be resolved at runtime.
Afterwards you may want to configure the "refresh" tab, if you also want to see newly created files in your project explorer. And if everything works well after some trial and error, you may also want to look at the "Build Options" tab to have it run in the background.

How to have different file links to an Eclipse project (not importing it)?

I noticed when I import a file, the file is copied to the work space, but can I just create a file link in a Eclipse project? So when I modify the files in Eclipse, the files in the linked location is modified. In this way, I can version control the files using SVN. And I don't need to copy the modified files back to its dedicated directory when deployment.
The following is a more detailed description of my problem:
I have a cgi application located and runs in apache. The app runs with diff configuration files for different 'projects' which is more like showing different dataset with its corresponding configuration file. My task is to write the configurations files which will require some perl callback functions, css files and images. All these files have their own dedicated directories located in different places in the company server which i have not much control with.. So far, I just use command line to modify files and keeping old copies for version control. If I can do something like my above description, I will be able to have a central place to work on and do SVN. Or do you have a better idea how I should set up my work environment?
Thanks heaps in advance.
Yes you can,
File -> New File -> Advanced (at the bottom) -> Link to file in the file system
Manu
I have figured out a way to conveniently to version control files from different places and can deploy them to the correct directories after modified. It's ....... using..... the ANT build file... I just have all files imported to a single project and use an ANT build to distribute them back to their corresponding destination.
Use svn:external http://svnbook.red-bean.com/en/1.0/ch07s03.html
One drawback though, you have to update your other projects once you commit a shared files.