How can I get wildcards to work in post-build commands? If I use a wildcard file reference in a post-build command, such as
cp $WRKSPC/boost/usr/lib/libboost_system.so.* $PRJROOT/filesys/fs/usr/lib
I get this output when I build the project:
Executing Post Build commands ...
cp: cannot stat `/home/plong/workspace/boost/usr/lib/libboost_system.so.*': No such file or directory
This command works when I enter it in a bash shell. It also works as a post-build command if I remove the wildcard, as in
cp $WRKSPC/boost/usr/lib/libboost_system.so.1.52.0 $PRJROOT/filesys/fs/usr/lib
What gives?
Wildcard doesn't work in post-build command
-
- CodeLite Enthusiast
- Posts: 10
- Joined: Thu Apr 18, 2013 9:33 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
- eranif
- CodeLite Plugin
- Posts: 6375
- Joined: Wed Feb 06, 2008 9:29 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
Where did you define WRKSPC and PRJROOT ?plong wrote:cp $WRKSPC/boost/usr/lib/libboost_system.so.* $PRJROOT/filesys/fs/usr/lib
Are these environment variables? If yes, then codelite should replace them with their proper content.
However, if you defined them somewhere in your ~/.bashrc or something similar, you should make sure to start codelite from the terminal that these variables are defined.
You could also define them within codelite from Settings -> Environment variables
Eran
Make sure you have read the HOW TO POST thread
-
- CodeLite Enthusiast
- Posts: 10
- Joined: Thu Apr 18, 2013 9:33 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
Oh, yeah, they're exported from ~/.profile. They get expanded correctly as you can see in the build output, so that's not the issue. The problem is with the *.
For example, this works:
cp $WRKSPC/boost/usr/lib/libboost_system.so.1.52.0 $PRJROOT/filesys/fs/usr/lib
but this doesn't:
cp $WRKSPC/boost/usr/lib/libboost_system.so.* $PRJROOT/filesys/fs/usr/lib
Just to make sure, I replaced those variables with their values, and * still doesn't work.
For example, this works:
cp $WRKSPC/boost/usr/lib/libboost_system.so.1.52.0 $PRJROOT/filesys/fs/usr/lib
but this doesn't:
cp $WRKSPC/boost/usr/lib/libboost_system.so.* $PRJROOT/filesys/fs/usr/lib
Just to make sure, I replaced those variables with their values, and * still doesn't work.
-
- CodeLite Enthusiast
- Posts: 10
- Joined: Thu Apr 18, 2013 9:33 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
Oh, I wonder if this is the culprit. Does CodeLite execute those commands in a bash shell with the -f option? If so, bash doesn't do filename expansion, and the cp command is trying to copy a file with an asterisk in the filename. If this is the cause, is there a workaround, or is there any way to enable filename expansion?
- eranif
- CodeLite Plugin
- Posts: 6375
- Joined: Wed Feb 06, 2008 9:29 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
/me looks harder, but still can't see the build outputplong wrote:They get expanded correctly as you can see in the build output
I think that posting the *complete build log* of your problem will clear things up
Eran
Make sure you have read the HOW TO POST thread
-
- CodeLite Enthusiast
- Posts: 10
- Joined: Thu Apr 18, 2013 9:33 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
Sorry. In my query, I said,
I think this pretty much proves that $WRKSPC expands to /home/plong/workspace. But, like I said earlier, I replaced those variables with their values and still get the same, "cannot stat" error message, so shell parameter expansion is a red herring.
I've been poking around some more and am pretty sure file expansion is disabled for custom build steps http://www.gnu.org/software/bash/manual ... -Expansion.
Those last two lines appear in the Build tab of Output View. That's what I meant by "build output."If I use a wildcard file reference in a post-build command, such as
cp $WRKSPC/boost/usr/lib/libboost_system.so.* $PRJROOT/filesys/fs/usr/lib
I get this output when I build the project:
Executing Post Build commands ...
cp: cannot stat `/home/plong/workspace/boost/usr/lib/libboost_system.so.*': No such file or directory
I think this pretty much proves that $WRKSPC expands to /home/plong/workspace. But, like I said earlier, I replaced those variables with their values and still get the same, "cannot stat" error message, so shell parameter expansion is a red herring.
I've been poking around some more and am pretty sure file expansion is disabled for custom build steps http://www.gnu.org/software/bash/manual ... -Expansion.
- eranif
- CodeLite Plugin
- Posts: 6375
- Joined: Wed Feb 06, 2008 9:29 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
For custom build projects (you should have mentioned this earlier...) - codelite wraps all the post-build commands in a temporary script file and execute it with '/bin/sh -f' ... this is a bug which is now fixed in git headplong wrote:Oh, I wonder if this is the culprit. Does CodeLite execute those commands in a bash shell with the -f option? If so, bash doesn't do filename expansion, and the cp command is trying to copy a file with an asterisk in the filename
Eran
Make sure you have read the HOW TO POST thread
-
- CodeLite Enthusiast
- Posts: 10
- Joined: Thu Apr 18, 2013 9:33 pm
- Genuine User: Yes
- IDE Question: C++
- Contact:
Re: Wildcard doesn't work in post-build command
Sorry. Thanks for your attention.