On Sat, Mar 12, 2016 at 5:00 AM, Yingfeng Wang <ywang...@gmail.com> wrote:
> Greg,
>
> Thanks. Your suggestion solves my problem. I add the following part in my
> compiling command.
>
> -L/Users/yingfeng/software/RDKit/rdkit-Release_2015_03_1/lib -lRDInchiLib
> -lInChi -lGraphMol -lRDGeneral
>
> and the complete compiling command is
>
> g++ -Wall -O2 -std=c++11 -I
> /Users/yingfeng/software/RDKit/rdkit-Release_2015_03_1/Code -I
> /Users/yingfeng/software/RDKit/rdkit-Release_2015_03_1/External -I
> /usr/local/Cellar/boost/1.60.0_1/include
> -L/Users/yingfeng/software/RDKit/rdkit-Release_2015_03_1/lib -lRDInchiLib
> -lInChi -lGraphMol -lRDGeneral -o MYTEST main.cpp
>
> Is there a way to figure out which library I should link? Actually, my
> backup plan is to link all libraries in
> /Users/yingfeng/software/RDKit/rdkit-Release_2015_03_1/lib
>
That's one approach, but it's kind of overkill. :-)
The big thing is to know which library the functionality you are calling
comes from. You can generally tell this from the header files (i.e. if you
include something from "DataStructs", then you need to include the
DataStructs library). this isn't perfect because some libraries have
dependencies on others, but it often works The other approach is to look in
the RDKit source code at the CMakeLists.txt file for the libraries you are
using and look to see which extra libraries they include when building the
tests.
This isn't very well documented. I think this kind of documentation is
tricky to generate, so I don't want to do it unless it's going to help a
large number of people, and it's not at all clear to me how many C++ RDKit
users there are.
By the way, is there a way to guarantee that users using my binary file
> (e.g. MYTEST in this case) do not need to install RDKit? I tried -static,
> but it didn't work. For example, I hope a user can run MYTEST on another
> Mac without RDKit.
>
If you link against the _static version of the libraries (i.e.
-lGraphMol_static instead of -lGraphMol), then you should end up with a
version that doesn't require an RDKit install to run. It can be trickier to
get these commands right because on many (all?) systems, there is an order
dependency to static linkage. So since SmilesParse_static depends on
GraphMol_static, GraphMol_static needs to appear *after* SmilesParse_static
in the link line.
I hope this helps,
-greg
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss