{"id":350,"date":"2013-02-04T10:31:43","date_gmt":"2013-02-04T10:31:43","guid":{"rendered":"http:\/\/nextmovesoftware.com\/blog\/?p=350"},"modified":"2013-02-04T10:35:10","modified_gmt":"2013-02-04T10:35:10","slug":"looking-for-a-c-cheminformatics-toolkit","status":"publish","type":"post","link":"https:\/\/nextmovesoftware.com\/blog\/2013\/02\/04\/looking-for-a-c-cheminformatics-toolkit\/","title":{"rendered":"Looking for a C++ cheminformatics toolkit?"},"content":{"rendered":"<p>If you are writing a C++ application that uses a cheminformatics toolkit, a key step during the configuration process is to tell the build system the location of the toolkit libraries and include files. However, in an ideal world, the build system would find these automatically based on standard install locations or hints such as the value of RDBASE for RDKit.<\/p>\n<p>We have incorporated some of these ideas into CMake modules to find Open Babel, OEChem or RDKit. As a service to the community, we are placing these into the public domain (E&#038;OE). Enjoy.<\/p>\n<style>\npre { font-family: monospace; color: #000000; background-color: #ffffff; }\n.Constant { color: #ff00ff; }\n.Special { color: #6a5acd; }\n.Type { color: #2e8b57; font-weight: bold; }\n.Identifier { color: #008080; }\n.Statement { color: #804040; font-weight: bold; }\n.Comment { color: #0000ff; }\n<\/style>\n<pre style=\"overflow:auto; height:250px;\">\r\n<span class=\"Comment\"># FindOpenBabel.cmake<\/span>\r\n<span class=\"Comment\"># Placed in the public domain by NextMove Software in 2013<\/span>\r\n<span class=\"Comment\"># Try to find Open Babel headers and libraries<\/span>\r\n<span class=\"Comment\"># Defines:<\/span>\r\n<span class=\"Comment\">#<\/span>\r\n<span class=\"Comment\">#  OPENBABEL_FOUND - system has Open Babel<\/span>\r\n<span class=\"Comment\">#  OPENBABEL_INCLUDE_DIRS - the Open Babel include directories<\/span>\r\n<span class=\"Comment\">#  OPENBABEL_LIBRARIES - Link these to use Open Babel<\/span>\r\n\r\n<span class=\"Statement\">if<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIRS <\/span><span class=\"Statement\">AND<\/span><span class=\"Identifier\"> OPENBABEL_LIBRARIES)<\/span>\r\n  <span class=\"Comment\"># in cache already or user-specified<\/span>\r\n  <span class=\"Statement\">set<\/span><span class=\"Identifier\">(OPENBABEL_FOUND <\/span><span class=\"Statement\">TRUE<\/span><span class=\"Identifier\">)<\/span>\r\n\r\n<span class=\"Statement\">else<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span><span class=\"Statement\">NOT<\/span><span class=\"Identifier\"> OPENBABEL_INCLUDE_DIRS)<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span>WIN32<span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIR openbabel\/obconversion.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Type\">${OPENBABEL_DIR}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_DIR}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_DIR}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_PATH}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_PATH}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_DIR}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_PATH}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_BASE}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        C:<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">OpenBabel<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">      )<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIR2 openbabel\/babelconfig.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Type\">${OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/windows-vc2008\/build\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/windows-vc2008\/build\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        )<\/span>\r\n      <span class=\"Statement\">set<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIRS <\/span><span class=\"Type\">${OPENBABEL_INCLUDE_DIR}<\/span><span class=\"Identifier\"> <\/span><span class=\"Type\">${OPENBABEL_INCLUDE_DIR2}<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">else<\/span><span class=\"Identifier\">()<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIRS openbabel\/obconversion.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Type\">${OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_DIR}<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_DIR}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_PATH}<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_INCLUDE_PATH}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_PATH}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_PATH}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_BASE}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OPENBABEL_BASE}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        \/usr\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        \/usr\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/openbabel\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/openbabel\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/openbabel-2.0\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/openbabel-2.0\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        ~\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/openbabel-2.0<\/span>\r\n<span class=\"Identifier\">        ~\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">      )<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIRS)<\/span>\r\n      <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found Open Babel include files at <\/span><span class=\"Type\">${OPENBABEL_INCLUDE_DIRS}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span><span class=\"Statement\">NOT<\/span><span class=\"Identifier\"> OPENBABEL_LIBRARY_DIR)<\/span>\r\n    <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(OPENBABEL_LIBRARIES <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> openbabel openbabel-2<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Type\">${OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Type\">${OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/windows-vc2008\/build\/src\/Release<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Special\">$ENV{OPENBABEL_LIBRARIES}<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Special\">$ENV{OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Special\">$ENV{OPENBABEL_DIR}<\/span><span class=\"Identifier\">\/windows-vc2008\/build\/src\/Release<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Special\">$ENV{OPENBABEL_PATH}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Special\">$ENV{OPENBABEL_BASE}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">      \/usr\/lib<\/span>\r\n<span class=\"Identifier\">      \/usr\/local\/lib<\/span>\r\n<span class=\"Identifier\">      ~\/lib<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Special\">$ENV{LD_LIBRARY_PATH}<\/span>\r\n<span class=\"Identifier\">    )<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(OPENBABEL_LIBRARIES)<\/span>\r\n      <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found Open Babel library at <\/span><span class=\"Type\">${OPENBABEL_LIBRARIES}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIRS <\/span><span class=\"Statement\">AND<\/span><span class=\"Identifier\"> OPENBABEL_LIBRARIES)<\/span>\r\n    <span class=\"Statement\">set<\/span><span class=\"Identifier\">(OPENBABEL_FOUND <\/span><span class=\"Statement\">TRUE<\/span><span class=\"Identifier\">)<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">mark_as_advanced<\/span><span class=\"Identifier\">(OPENBABEL_INCLUDE_DIRS OPENBABEL_LIBRARIES)<\/span>\r\n<span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n<\/pre>\n<pre style=\"overflow:auto; height:250px;\">\r\n<span class=\"Comment\"># FindOEChem.cmake<\/span>\r\n<span class=\"Comment\"># Placed in the public domain by NextMove Software in 2013<\/span>\r\n<span class=\"Comment\"># Try to find OEChem headers and libraries<\/span>\r\n<span class=\"Comment\"># Defines:<\/span>\r\n<span class=\"Comment\">#<\/span>\r\n<span class=\"Comment\">#  OECHEM_FOUND - system has OEChem<\/span>\r\n<span class=\"Comment\">#  OECHEM_INCLUDE_DIR - the OEChem include directory<\/span>\r\n<span class=\"Comment\">#  OECHEM_LIBRARIES - Link these to use OEChem<\/span>\r\n\r\n<span class=\"Statement\">if<\/span><span class=\"Identifier\">(OECHEM_INCLUDE_DIR <\/span><span class=\"Statement\">AND<\/span><span class=\"Identifier\"> OECHEM_LIBRARIES)<\/span>\r\n  <span class=\"Comment\"># in cache already or user-specified<\/span>\r\n  <span class=\"Statement\">set<\/span><span class=\"Identifier\">(OECHEM_FOUND <\/span><span class=\"Statement\">TRUE<\/span><span class=\"Identifier\">)<\/span>\r\n\r\n<span class=\"Statement\">else<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span><span class=\"Statement\">NOT<\/span><span class=\"Identifier\"> OECHEM_INCLUDE_DIR)<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span>WIN32<span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(OECHEM_INCLUDE_DIR oechem.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_INCLUDE_DIR}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_INCLUDE_PATH}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_BASE}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">toolkits<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_BASE}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        C:<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">OpenEye<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">toolkits<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        C:<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">OpenEye<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">      )<\/span>\r\n    <span class=\"Statement\">else<\/span><span class=\"Identifier\">()<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(OECHEM_INCLUDE_DIR oechem.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{OECHEM_INCLUDE_DIR}<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{OECHEM_INCLUDE_PATH}<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{OECHEM_BASE}<\/span><span class=\"Identifier\">\/toolkits\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{OECHEM_BASE}<\/span><span class=\"Identifier\">\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          \/usr\/local\/openeye\/toolkits\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          \/usr\/local\/openeye\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          \/usr\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          \/usr\/local\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          ~\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">      )<\/span>\r\n      <span class=\"Statement\">if<\/span><span class=\"Identifier\">(OECHEM_INCLUDE_DIR)<\/span>\r\n         <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found OEChem include files at <\/span><span class=\"Type\">${OECHEM_INCLUDE_DIR}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span><span class=\"Statement\">NOT<\/span><span class=\"Identifier\"> OECHEM_LIBRARIES)<\/span>\r\n    <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(OECHEM_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> oechem<\/span>\r\n<span class=\"Identifier\">      HINTS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Type\">${OECHEM_INCLUDE_DIR}<\/span><span class=\"Identifier\">\/..\/lib<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_LIB_DIR}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_LIB_PATH}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_LIBRARIES}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_BASE}<\/span><span class=\"Identifier\">\/toolkits\/lib<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{OECHEM_BASE}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">        \/usr\/openeye\/toolkits\/lib<\/span>\r\n<span class=\"Identifier\">        \/usr\/openeye\/lib<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/openeye\/toolkits\/lib<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/openeye\/lib<\/span>\r\n<span class=\"Identifier\">        ~\/openeye\/toolkits\/lib<\/span>\r\n<span class=\"Identifier\">        ~\/openeye\/lib<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{LD_LIBRARY_PATH}<\/span>\r\n<span class=\"Identifier\">    )<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(OECHEM_LIB)<\/span>\r\n       <span class=\"Statement\">GET_FILENAME_COMPONENT<\/span><span class=\"Identifier\">(OECHEM_LIBRARY_DIR <\/span><span class=\"Type\">${OECHEM_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Statement\">PATH<\/span><span class=\"Identifier\">)<\/span>\r\n       <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found OEChem libraries at <\/span><span class=\"Type\">${OECHEM_LIBRARY_DIR}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n\r\n      <span class=\"Comment\"># Note that the order of the following libraries is significant!!<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(OESYSTEM_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> oesystem HINTS <\/span><span class=\"Type\">${OECHEM_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(OEPLATFORM_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> oeplatform HINTS <\/span><span class=\"Type\">${OECHEM_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">set<\/span> <span class=\"Identifier\">(OECHEM_LIBRARIES <\/span><span class=\"Type\">${OECHEM_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Type\">${OESYSTEM_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Type\">${OEPLATFORM_LIB}<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(OECHEM_INCLUDE_DIR <\/span><span class=\"Statement\">AND<\/span><span class=\"Identifier\"> OECHEM_LIBRARIES)<\/span>\r\n    <span class=\"Statement\">set<\/span><span class=\"Identifier\">(OECHEM_FOUND <\/span><span class=\"Statement\">TRUE<\/span><span class=\"Identifier\">)<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">mark_as_advanced<\/span><span class=\"Identifier\">(OECHEM_INCLUDE_DIR OECHEM_LIBRARIES)<\/span>\r\n<span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n<\/pre>\n<pre style=\"overflow:auto; height:250px;\">\r\n<span class=\"Comment\"># FindRDKit.cmake<\/span>\r\n<span class=\"Comment\"># Placed in the public domain by NextMove Software in 2013<\/span>\r\n<span class=\"Comment\"># Try to find RDKit headers and libraries<\/span>\r\n<span class=\"Comment\"># Defines:<\/span>\r\n<span class=\"Comment\">#<\/span>\r\n<span class=\"Comment\">#  RDKIT_FOUND - system has RDKit<\/span>\r\n<span class=\"Comment\">#  RDKIT_INCLUDE_DIR - the RDKit include directory<\/span>\r\n<span class=\"Comment\">#  RDKIT_LIBRARIES - Link these to use RDKit<\/span>\r\n\r\n<span class=\"Statement\">if<\/span><span class=\"Identifier\">(RDKIT_INCLUDE_DIR <\/span><span class=\"Statement\">AND<\/span><span class=\"Identifier\"> RDKIT_LIBRARIES)<\/span>\r\n  <span class=\"Comment\"># in cache already or user-specified<\/span>\r\n  <span class=\"Statement\">set<\/span><span class=\"Identifier\">(RDKIT_FOUND <\/span><span class=\"Statement\">TRUE<\/span><span class=\"Identifier\">)<\/span>\r\n\r\n<span class=\"Statement\">else<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span><span class=\"Statement\">NOT<\/span><span class=\"Identifier\"> RDKIT_INCLUDE_DIR)<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span>WIN32<span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(RDKIT_INCLUDE_DIR GraphMol\/RDKitBase.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Type\">${RDKIT_DIR}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">Code<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_INCLUDE_DIR}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_INCLUDE_PATH}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_BASE}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">Code<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDBASE}<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">Code<\/span>\r\n<span class=\"Identifier\">        C:<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">RDKit<\/span><span class=\"Special\">\\\\<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">        C:<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">RDKit<\/span><span class=\"Special\">\\\\<\/span><span class=\"Identifier\">Code<\/span>\r\n<span class=\"Identifier\">      )<\/span>\r\n    <span class=\"Statement\">else<\/span><span class=\"Identifier\">()<\/span>\r\n      <span class=\"Statement\">find_path<\/span><span class=\"Identifier\">(RDKIT_INCLUDE_DIR GraphMol\/RDKitBase.h<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Type\">${RDKIT_DIR}<\/span><span class=\"Identifier\">\/Code<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{RDKIT_INCLUDE_DIR}<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{RDKIT_INCLUDE_PATH}<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{RDKIT_BASE}<\/span><span class=\"Identifier\">\/Code<\/span>\r\n<span class=\"Identifier\">          <\/span><span class=\"Special\">$ENV{RDBASE}<\/span><span class=\"Identifier\">\/Code<\/span>\r\n<span class=\"Identifier\">          \/usr\/local\/rdkit\/<\/span><span class=\"Statement\">include<\/span><span class=\"Identifier\">\/Code<\/span>\r\n<span class=\"Identifier\">          \/usr\/local\/rdkit\/<\/span><span class=\"Statement\">include<\/span>\r\n<span class=\"Identifier\">          \/usr\/local\/rdkit\/Code<\/span>\r\n<span class=\"Identifier\">          ~\/rdkit\/Code<\/span>\r\n<span class=\"Identifier\">      )<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(RDKIT_INCLUDE_DIR)<\/span>\r\n       <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found RDKit include files at <\/span><span class=\"Type\">${RDKIT_INCLUDE_DIR}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(<\/span><span class=\"Statement\">NOT<\/span><span class=\"Identifier\"> RDKIT_LIBRARIES)<\/span>\r\n    <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(FILEPARSERS_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> FileParsers<\/span>\r\n<span class=\"Identifier\">      <\/span><span class=\"Statement\">PATHS<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Type\">${RDKIT_DIR}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_LIB_DIR}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_LIB_PATH}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_LIBRARIES}<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDKIT_BASE}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{RDBASE}<\/span><span class=\"Identifier\">\/lib<\/span>\r\n<span class=\"Identifier\">        \/usr\/local\/rdkit\/lib<\/span>\r\n<span class=\"Identifier\">        ~\/rdkit\/lib<\/span>\r\n<span class=\"Identifier\">        <\/span><span class=\"Special\">$ENV{LD_LIBRARY_PATH}<\/span>\r\n<span class=\"Identifier\">    )<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(FILEPARSERS_LIB)<\/span>\r\n       <span class=\"Statement\">GET_FILENAME_COMPONENT<\/span><span class=\"Identifier\">(RDKIT_LIBRARY_DIR <\/span><span class=\"Type\">${FILEPARSERS_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Statement\">PATH<\/span><span class=\"Identifier\">)<\/span>\r\n       <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found RDKit libraries at <\/span><span class=\"Type\">${RDKIT_LIBRARY_DIR}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n\r\n      <span class=\"Comment\"># Note that the order of the following libraries is significant!!<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(SMILESPARSE_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> SmilesParse<\/span>\r\n<span class=\"Identifier\">                                   HINTS <\/span><span class=\"Type\">${RDKIT_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(DEPICTOR_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> Depictor<\/span>\r\n<span class=\"Identifier\">                                HINTS <\/span><span class=\"Type\">${RDKIT_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(GRAPHMOL_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> GraphMol<\/span>\r\n<span class=\"Identifier\">                                HINTS <\/span><span class=\"Type\">${RDKIT_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(RDGEOMETRYLIB_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> RDGeometryLib<\/span>\r\n<span class=\"Identifier\">                                     HINTS <\/span><span class=\"Type\">${RDKIT_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">find_library<\/span><span class=\"Identifier\">(RDGENERAL_LIB <\/span><span class=\"Statement\">NAMES<\/span><span class=\"Identifier\"> RDGeneral<\/span>\r\n<span class=\"Identifier\">                                 HINTS <\/span><span class=\"Type\">${RDKIT_LIBRARY_DIR}<\/span><span class=\"Identifier\">)<\/span>\r\n      <span class=\"Statement\">set<\/span> <span class=\"Identifier\">(RDKIT_LIBRARIES <\/span><span class=\"Type\">${FILEPARSERS_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Type\">${SMILESPARSE_LIB}<\/span>\r\n<span class=\"Identifier\">              <\/span><span class=\"Type\">${DEPICTOR_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Type\">${GRAPHMOL_LIB}<\/span><span class=\"Identifier\"> <\/span><span class=\"Type\">${RDGEOMETRYLIB_LIB}<\/span>\r\n<span class=\"Identifier\">              <\/span><span class=\"Type\">${RDGENERAL_LIB}<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n    <span class=\"Statement\">if<\/span><span class=\"Identifier\">(RDKIT_LIBRARIES)<\/span>\r\n            <span class=\"Statement\">message<\/span><span class=\"Identifier\">(STATUS <\/span><span class=\"Constant\">&quot;Found RDKit library files at <\/span><span class=\"Type\">${RDKIT_LIBRARIES}<\/span><span class=\"Constant\">&quot;<\/span><span class=\"Identifier\">)<\/span>\r\n    <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">if<\/span><span class=\"Identifier\">(RDKIT_INCLUDE_DIR <\/span><span class=\"Statement\">AND<\/span><span class=\"Identifier\"> RDKIT_LIBRARIES)<\/span>\r\n    <span class=\"Statement\">set<\/span><span class=\"Identifier\">(RDKIT_FOUND <\/span><span class=\"Statement\">TRUE<\/span><span class=\"Identifier\">)<\/span>\r\n  <span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n  <span class=\"Statement\">mark_as_advanced<\/span><span class=\"Identifier\">(RDKIT_INCLUDE_DIR RDKIT_LIBRARIES)<\/span>\r\n<span class=\"Statement\">endif<\/span><span class=\"Identifier\">()<\/span>\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>If you are writing a C++ application that uses a cheminformatics toolkit, a key step during the configuration process is to tell the build system the location of the toolkit libraries and include files. However, in an ideal world, the build system would find these automatically based on standard install locations or hints such as &hellip; <a href=\"https:\/\/nextmovesoftware.com\/blog\/2013\/02\/04\/looking-for-a-c-cheminformatics-toolkit\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Looking for a C++ cheminformatics toolkit?<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts\/350"}],"collection":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/comments?post=350"}],"version-history":[{"count":13,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts\/350\/revisions"}],"predecessor-version":[{"id":707,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts\/350\/revisions\/707"}],"wp:attachment":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/media?parent=350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/categories?post=350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/tags?post=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}