[CMake] Creating a list of link directories from a variable

Salazar De Troya, Miguel salazardetro1 at llnl.gov
Thu Mar 31 18:22:09 EDT 2016


Hello

I am trying to compile a program with a library that provides a bash script to generate the dependencies, libraries and the link directories for the Makefile. I want to generate a CMakeLists.txt that can handle these dependencies from that library. I have been able to come up with regexp that can extract the information and put it into a variable with the dirs or library names separated by comma, for instance:

INCLUDE_DIRS =

/g/g92/miguel/code/libmesh_2D/include;/usr/include/curl;/usr/include/glpk;/usr/local/tools/vtk-6.1.0/include/vtk-6.1;/g/g92/miguel/petsc-3.6.2/include;/g/g92/miguel/petsc-3.6.2/miguel-opt/include;/usr/local/tools/openmpi-intel-1.8.4/include/openmpi/opal/mca/hwloc/hwloc191/hwloc/include;/usr/local/tools/openmpi-intel-1.8.4/include/openmpi/opal/mca/event/libevent2021/libevent;/usr/local/tools/openmpi-intel-1.8.4/include/openmpi/opal/mca/event/libevent2021/libevent/include;/usr/local/tools/openmpi-intel-1.8.4/include;/usr/local/tools/openmpi-intel-1.8.4/include/openmpi;/usr/local/tools/boost-mpi-1.55.0//include


LIBS =

-lcurl;-lhdf5;-lglpk;-lvtkIOCore-6.1;-lvtkCommonCore-6.1;-lvtkCommonDataModel-6.1;-lvtkFiltersCore-6.1;-lvtkIOXML-6.1;-lvtkImagingCore-6.1;-lvtkIOImage-6.1;-lvtkImagingMath-6.1;-lz;-lpetsc;-lcmumps;-ldmumps;-lsmumps;-lzmumps;-lmumps_common;-lpord;-lscalapack;-lHYPRE;-lml;-llapack;-lblas;-lparmetis;-lmetis;-lX11;-lhwloc;-lssl;-lcrypto;-lmpi_usempif08;-lmpi_usempi_ignore_tkr;-lmpi_mpifh;-lifport;-lifcore;-lm;-lmpi;-limf;-lsvml;-lirng;-lipgo;-ldecimal;-lcilkrts;-lstdc++;-lgcc_s;-lirc;-lpthread;-lirc_s;-ldl;-lmesh_opt


LIB_DIRS =

/usr/lib;/lib;/usr/lib64;/usr/local/tools/vtk-6.1.0/lib;/g/g92/miguel/petsc-3.6.2/miguel-opt/lib;/usr/local/tools/openmpi-intel-1.8.4/lib;/usr/local/tools/ic-14.0.174/composer_xe_2013_sp1.3.174/compiler/lib/intel64;/usr/lib/gcc/x86_64-redhat-linux/4.4.7;/g/g92/miguel/code/libmesh_2D/lib


These are variables in my environment that I use in CMake with $ENV{VAR}. How can I use this information for the commands:

include_directories($ENV{INCLUDE_DIRS})

link_directories($ENV{LIB_DIRS})

target_link_libraries($ENV{LIBS}) ?


It seems that cmake can digest the include directories and the target_link_libraries (because they appear correctly in the compilation), but not the link_directories. Why? Also, I’ve read that it is more correct to use find_library() instead. How would I iterate over the LIBS? Can I use a single LIB_DIRS (with all the information above) in the PATHS argument of find_library()


Thanks

Miguel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160331/0e0dd1d0/attachment.html>


More information about the CMake mailing list