Eu tenho uma máquina de laboratório com recursos limitados (isso não é controlado por mim), o que basicamente me permite apenas gravar em um disco rígido externo.
Eu preciso compilar meu projeto de classe usando boost e pcl. Meu procedimento foi criar um ambiente conda dentro do disco rígido externo e, em seguida, conda install -c conda-forge boost pcl
.
Isso funciona na medida em que os pacotes são instalados. Quando eu preciso compilar, eu uso o seguinte arquivo de conjunto de ferramentas do CMake:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_C_COMPILER /XXX/bin/clang)
SET(CMAKE_CXX_COMPILER /XXX/bin/clang++)
SET(CMAKE_FIND_ROOT_PATH /YYY/conda/envs/thesis-env /XXX/llvm)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Isso faz com que o trabalho de compilação seja executado ao executar o cmake e o make. O problema começa quando você tenta vincular; Eu recebo:
/usr/bin/ld: warning: libboost_system.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_filesystem.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_thread.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_date_time.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_iostreams.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_chrono.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_atomic.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libboost_regex.so.1.66.0, needed by /media/libre/jbayardo/conda/envs/thesis-env/lib/libpcl_common.so, not found (try using -rpath or -rpath-link)
CMakeFiles/nch.dir/main.cpp.o: En la función 'boost::system::generic_category()':
main.cpp:(.text._ZN5boost6system16generic_categoryEv[_ZN5boost6system16generic_categoryEv]+0x6): referencia a 'boost::system::detail::generic_category_instance' sin definir
Meu entendimento é que a dependência de impulso do pcl não está sendo resolvida corretamente durante o tempo de link. Existe alguma maneira de ajudar o CMake a resolver isso?