Thank you so much! Nikos Yiotis Chat Skype: nyiotis Contact Me [image: Linkedin]<http://my.wisestamp.com/link?u=ws7c27w2vnrx4d2b&site=www.linkedin.com/in/yiotis>
On Mon, Jan 3, 2011 at 9:57 AM, Nizar Khalifa Sallem <[email protected]>wrote: > At Sun, 2 Jan 2011 22:15:56 +0100, > ny wrote: > > > > ** Apologies for double-posting my earlier message got truncated ** > > > > greetings! > > > > I spent enough time trying to make the software work, > > so I'd be happy to get some feedback:: > > I built research code written in (templated) c++, size is approximately > > ~15K lines. I am on a mac and do not use Cocoa(/xcode), straight from > > command line. Note that I choose to generate a Unix makefile, not an > > xcode project and I am on snow leopard 10.6.5 w/ g++ 4.2.1. > > The pain was that there were no makefile coming along w/ the project, > > so I had to translate the *.vcproj file from scratch to CMakelists and > > then convert it to makefile. My directories structure (directories > marked > > w/ DIR_ else are files, indentation denotes deeper level):: > > > > DIR_4DMPU_exampleTest > > > > 4DMPU_example.cpp > > DIR_ann_1.1.2 > > DIR_cmake > > CMakeLists.txt > > FindANN.cmake > > Modules > > FindANN.cmake > > > > DIR_include > > > > DIR_mc4d_tables > > num_tet_table.cpp > > tet_table.cpp > > vert_table.cpp > > > > DIR_4DMPU_exampleTestBin > > > > In the cmake GUI I add: > > ANN_LIBRARY > /Users/nikos/Downloads/4DMPU_exampleTest/ann_1.1.2/include > > ANN_INCLUDE_DIR > /Users/nikos/Downloads/4DMPU_exampleTest/ann_1.1.2/lib/libANN.a > > > > My CMakeLists.txt is:: > > > > cmake_minimum_required(VERSION 2.8) > > project( 4DMPU_example ) > > > > SET (CMAKE_BUILD_TYPE DEBUG) > > > > set(SOURCE_FILES > > 4DMPU_example.cpp > > mc4d_tables/num_tet_table.cpp > > mc4d_tables/tet_table.cpp > > mc4d_tables/vert_table.cpp > > ) > > > > set(INCLUDE_FILES > > include/4dtables.h > > include/ann_helper.h > > ... # more headers > > include/Volume.h ann_1.1.2/include > > include/VolumeIO.h > > ) > > > > include_directories( > > ${PROJECT_SOURCE_DIR}/ann_1.1.2/include > > ${PROJECT_SOURCE_DIR}/ann_1.1.2/lib > > include > > ) > > > > INCLUDE(FindANN.cmake) > > IF(ANN_FOUND) > > INCLUDE_DIRECTORIES( ${ANN_INCLUDE_DIR} ) > > ENDIF(ANN_FOUND) > > > > set(LIBS ${LIBS} ${ANN_LIBRARY}) > > > > add_executable( 4DMPU_example ${SOURCE_FILES} ) > > target_link_libraries( 4DMPU_example ${LIBS} ) > > > > and the content of the FindANN.cmake:: > > > > FIND_LIBRARY(ANN_LIBRARY lANN > > ${PROJECT_SOURCE_DIR}/ann_1.1.2/lib > > ) > > FIND_PATH( ANN_INCLUDE_DIR ANN/ANN.h ANN/ANNperf.h ANN/ANNx.h > > ${PROJECT_SOURCE_DIR}/ann_1.1.2/include > > ) > > > > IF(ANN_LIBRARY) > > IF(ANN_INCLUDE_DIR) > > SET(ANN_FOUND TRUE) > > ENDIF(ANN_INCLUDE_DIR) > > ENDIF(ANN_LIBRARY) > > > > The project compiles fine this way. > > > > Now, the problem is that if I follow the advice below > > > > > http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries#Using_external_libraries_in_your_project > > > > and add the line > > > > set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} > "${CMAKE_SOURCE_DIR}/cmake/Modules/") > > > > and, moreover, substitute > > > > include_directories( > > ${PROJECT_SOURCE_DIR}/ann_1.1.2/include > > ${PROJECT_SOURCE_DIR}/ann_1.1.2/lib > > include > > ) > > > > with > > > > find_package(ANN REQUIRED) > > include_directories(${ANN_INCLUDE_DIR} > > include > > ) > > > > into CMakeLists.txt I get a linking problem. > > I do not reproduce the message -> the point is that the ANN library is > not linked > > w/ my object files. Can anyone tell me what I am doing wrong in the 2nd > case? > > > > Note also that in the 2nd case I explicitly add:: > > > > ANN_DIR > /Users/nikos/Downloads/4DMPU_exampleTest/cmake/Modules > > > > in the cmake GUI. > > > > Thanks for any pointers > > N > > > > > Hi, the problem is that you don't have a CMakeLists for your ANN > library so 2 choices: > 1. write a CMakeLists for ANN and then just add_subdirectory(ANN) and > use the ANN_library target name to link with. > 2. assume that ANN is a part of your project which you have done so > far but the wrong way. > you need to do the following: > i- remove find_package(ANN REQUIRED) since as far as I know from ANN > it doesn't ship with a .pc or FindANN.cmake file so you can't use find > find_package(ANN REQUIRED) > ii- set ANN_INCLUDE_DIR and ANN_LIBS_DIR and ANN_LIBRARIES to be user > assigned values which you fill with cmake > .. -DANN_INCLUDE_DIR=/path/to/ANN/install etc. > > Now I have submitted a while ago a CMakeLists.txt to the ANN library > project and they didn't include it so if you want you can have a ANN > subdirectory in your prject, place the CMakeLists.txt there and do as > 1. > > I attach the file > > cmake_minimum_required(VERSION 2.6) > > project(ANN CXX) > set(major 1) > set(minor 1) > set(revision 2) > set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ANN_SOURCE_DIR}/lib) > set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ANN_SOURCE_DIR}/bin) > > # the ANN library > include_directories(include) > include_directories(src) > file(GLOB sources src/*.cpp) > add_library(ANN SHARED ${sources}) > set_target_properties(ANN PROPERTIES VERSION ${major}.${minor}.${revision} > SOVERSION ${major} > > > COMPILE_FLAGS "-O3") > > # ANN test utility > include_directories(test) > file(GLOB test_sources test/*.cpp) > add_executable(ann_test ${test_sources}) > target_link_libraries(ann_test ANN) > > # ANN sample utility > add_executable(ann_sample sample/ann_sample.cpp) > target_link_libraries(ann_sample ANN) > > # ann2fig utility > add_executable(ann2fig ann2fig/ann2fig.cpp) > target_link_libraries(ann2fig ANN) > > # install > install(TARGETS ANN ann_test ann_sample ann2fig > RUNTIME DESTINATION bin > LIBRARY DESTINATION lib) > install(DIRECTORY sample doc DESTINATION share/ANN) > > > > Cheers, > -- > Nizar > > >
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
