LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   cairomm can't find sigc++/slot.h (https://www.linuxquestions.org/questions/slackware-14/cairomm-cant-find-sigc-slot-h-4175430821/)

boy_China 10-06-2012 06:59 AM

cairomm can't find sigc++/slot.h
 
Today I Compiled cairomm( Other software depends it).
My system version is 13.37

I download cairomm from slackbuilds.But it depend sigc++/slot.h, I download libsigc++ from slackbuilds and install success.

Then I compile cairomm ,I get the same error
Code:

../cairomm/surface.h:33:25: fatal error: sigc++/slot.h: No such file or directory
I found PKG_CONFIG_PATH not include /usr/include/,so I add it to /etc/profile.d/pkgconfig.sh and reboot

But now I still get the same error :(

I fond these threads,get same error
http://www.linuxquestions.org/questi...-and-q-321389/
But I use slackBuilds.I can't change slackBuilds or complied it by myself

So someone know how to solve it ? Thanks all :)

willysr 10-06-2012 07:06 AM

did you use the SlackBuild for 13.37 or 14.0?

wildwizard 10-06-2012 07:15 AM

Quote:

Originally Posted by boy_China (Post 4798715)
I found PKG_CONFIG_PATH not include /usr/include/,so I add it to /etc/profile.d/pkgconfig.sh and reboot

What you did there is wrong.

PKG_CONFIG_PATH is the search path for pkgconfig to find the relevent ".pc" (pkgconfig) files it has nothing whatsoever to do with the include path that the compiler will see.

What does modify (or should modify) the include path is the .pc file for sigc++, in fact the last line has the include paths.

Can you confirm that the /usr/lib(64)/pkgconfig/sigc++-2.0.pc file has the correct path to its includes on the last the line?
Should look like this
Code:

Cflags: -I${includedir}/sigc++-2.0 -I${libdir}/sigc++-2.0/include
And if you add the path you see in the compiler output and add it on you should have the full path to the include file which should be at that location.

Another possibility is that you have set the variable includedir, if you look again at the pc file for sigc++ you will see that that variable is used to generate the path, if you've changed something to set that path then you should change it back as you will break pretty much everything.

EDIT :-
Quote:

Originally Posted by willysr (Post 4798719)
did you use the SlackBuild for 13.37 or 14.0?

I just checked both sigc++ & cairomm and there is no difference in the SlackBuild between 13.37 and 14.0 other than the source code version change.

boy_China 10-06-2012 07:54 AM

Quote:

Originally Posted by willysr (Post 4798719)
did you use the SlackBuild for 13.37 or 14.0?

yes.
I use slackware 13.37,so I download slackBuilds 13.37
:)

boy_China 10-06-2012 08:24 AM

Quote:

Originally Posted by wildwizard (Post 4798725)
What you did there is wrong.

PKG_CONFIG_PATH is the search path for pkgconfig to find the relevent ".pc" (pkgconfig) files it has nothing whatsoever to do with the include path that the compiler will see.

What does modify (or should modify) the include path is the .pc file for sigc++, in fact the last line has the include paths.

Can you confirm that the /usr/lib(64)/pkgconfig/sigc++-2.0.pc file has the correct path to its includes on the last the line?
Should look like this
Code:

Cflags: -I${includedir}/sigc++-2.0 -I${libdir}/sigc++-2.0/include
And if you add the path you see in the compiler output and add it on you should have the full path to the include file which should be at that location.

Another possibility is that you have set the variable includedir, if you look again at the pc file for sigc++ you will see that that variable is used to generate the path, if you've changed something to set that path then you should change it back as you will break pretty much everything.

How can I confirm the /usr/lib/pkgconfig/sigc++-2.0.pc file has the correct path to its includes on the last the line?
Use this command ?
Code:

Cflags: -I${includedir}/sigc++-2.0 -I${libdir}/sigc++-2.0/include
I try it just now ,But nothing

I only change PKG_CONFIG_PATH. Except PKG_CONFIG_PATH , everything is from slackbuilds 13.37

wildwizard 10-06-2012 05:29 PM

Can you reformat your last post as I can't work out where the quotes end and where you start.

boy_China 10-06-2012 09:15 PM

Quote:

Originally Posted by wildwizard (Post 4799029)
Can you reformat your last post as I can't work out where the quotes end and where you start.

I'm so sorry to trouble you .I'm a newer and use a little quote . But after this time ,I believe I can use quote well.
Now I had reformat my last posts .If have free time ,please help me find the wrong step .Thanks a lot :-)

wildwizard 10-06-2012 10:10 PM

Quote:

Originally Posted by boy_China (Post 4798761)
How can I confirm the /usr/lib/pkgconfig/sigc++-2.0.pc file has the correct path to its includes on the last the line?
Use this command ?
Code:

Cflags: -I${includedir}/sigc++-2.0 -I${libdir}/sigc++-2.0/include

No that line is what should be in the pkgconfig file.

1. Have you located the sigc++ pkgconfig file?
2. Does it have that line at the end? or something similar?
3. Did you check the path out and see if the includes are actually there?

Some things to consider doing is to restart the build by removing the installed packages and rebuilding them again. And watching them as they build to make sure they don't break, I had one here the other day that broke part way through but it still created a package which was useless as there was no executable just a bunch of text files.

boy_China 10-06-2012 10:26 PM

Ok ,thanks.
I will reinstall my packages
Now I'm ready to return school . So I have no time to test in my slackware 13.37.
If I test , I will write down and post here
Thanks again:)

boy_China 10-08-2012 01:00 AM

Quote:

Originally Posted by wildwizard (Post 4799135)
No that line is what should be in the pkgconfig file.

1. Have you located the sigc++ pkgconfig file?
2. Does it have that line at the end? or something similar?
3. Did you check the path out and see if the includes are actually there?

Some things to consider doing is to restart the build by removing the installed packages and rebuilding them again. And watching them as they build to make sure they don't break, I had one here the other day that broke part way through but it still created a package which was useless as there was no executable just a bunch of text files.

1.The file named "sigc++.h" locate in /usr/include/sigc++-2.0/sigc++/slot.h

2.Yes,I fond something similar.Look this:
Code:

Name: cairomm
Description: C++ binding for the cairo graphics library
Version: 1.9.8
URL: http://www.cairographics.org/cairomm/
Requires: cairo >= 1.10.0 sigc++-2.0
Libs: -L${libdir} -lcairomm-1.0
Cflags: -I${includedir}/cairomm-1.0 -I${libdir}/cairomm-1.0/include

Is there help for solving this problem ? Thanks:)


All times are GMT -5. The time now is 03:45 AM.