Hi, Angeliki, thanks your comments.
I used properties because my old makefile was written to use g++ despite my files have suffix .c. I understood that cmake tried to compile my files using gcc instead of g++. I removed my set compiler flags. Moreover, I have finished to compile all programs of my project using cmake. My newer CMakeLists.txt is below and works fine. Now I will try to compile my project for Visual Studio 10. Any tips for this new work, I am thankful. cmake_minimum_required(VERSION 2.8) # project Information project(2pg_cartesian) set(PROJECT_VERSION "1.0") #Set CXX compiler for all files below set_source_files_properties(include/LoadConfig.h PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-NSGA2.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-Dominance.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-Front.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-MC_Metropolis.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-Mono.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-Random_Algorithm.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protpred-Gromacs-Sort_Method_Files_by_Front_Dominance.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/LoadConfig.cpp PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/ea_mono.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/topology.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/pdbio.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/protein.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/futil.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/pdbatom.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/messages.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/topologyio.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/topologylib.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/randomlib.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/vector_math.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/string_owner.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/math_owner.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/osutil.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/load_parameters.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/objective.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/aminoacids.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/aminoacids_io.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/populationio.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/rotation.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/solution.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/gromacs_objectives.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/solutionio.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/algorithms.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/ea_nsga2.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/dominance.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/owner_file_analysis.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/mc_metropolis.c PROPERTIES LANGUAGE CXX ) set_source_files_properties(src/random_algorithm.c PROPERTIES LANGUAGE CXX ) # set include include_directories(include) # add libries add_library(2PG_lib STATIC src/LoadConfig.cpp src/ea_mono.c src/topology.c src/pdbio.c src/protein.c src/futil.c src/pdbatom.c src/messages.c src/topologyio.c src/topologylib.c src/randomlib.c src/vector_math.c src/string_owner.c src/math_owner.c src/osutil.c src/load_parameters.c src/objective.c src/aminoacids.c src/aminoacids_io.c src/populationio.c src/rotation.c src/solution.c src/gromacs_objectives.c src/solutionio.c src/algorithms.c src/ea_nsga2.c src/dominance.c src/owner_file_analysis.c src/mc_metropolis.c src/random_algorithm.c ) #end of 2PG_lib # add target add_executable(protpred-Gromacs-NSGA2 src/protpred-Gromacs-NSGA2.c) target_link_libraries(protpred-Gromacs-NSGA2 2PG_lib) add_executable(protpred-Gromacs-Dominance src/protpred-Gromacs-Dominance.c) target_link_libraries(protpred-Gromacs-Dominance 2PG_lib) add_executable(protpred-Gromacs-Front src/protpred-Gromacs-Front.c) target_link_libraries(protpred-Gromacs-Front 2PG_lib) add_executable(protpred-Gromacs-MC_Metropolis src/protpred-Gromacs-MC_Metropolis.c) target_link_libraries(protpred-Gromacs-MC_Metropolis 2PG_lib) add_executable(protpred-Gromacs-Mono src/protpred-Gromacs-Mono.c) target_link_libraries(protpred-Gromacs-Mono 2PG_lib) add_executable(protpred-Gromacs-Random_Algorithm src/protpred-Gromacs-Random_Algorithm.c) target_link_libraries(protpred-Gromacs-Random_Algorithm 2PG_lib) add_executable(protpred-Gromacs-Sort_Method_Files_by_Front_Dominance src/protpred-Gromacs-Sort_Method_Files_by_Front_Dominance.c) target_link_libraries(protpred-Gromacs-Sort_Method_Files_by_Front_Dominance 2PG_lib) # install install(TARGETS protpred-Gromacs-NSGA2 DESTINATION bin) install(TARGETS protpred-Gromacs-Dominance DESTINATION bin) install(TARGETS protpred-Gromacs-Front DESTINATION bin) install(TARGETS protpred-Gromacs-MC_Metropolis DESTINATION bin) install(TARGETS protpred-Gromacs-Mono DESTINATION bin) install(TARGETS protpred-Gromacs-Random_Algorithm DESTINATION bin) install(TARGETS protpred-Gromacs-Sort_Method_Files_by_Front_Dominance DESTINATION bin) Best regards, -- Rodrigo Antonio Faccioli, Ph.D Development Software for Structural Bioinformatics Barao de Maua University University of Sao Paulo Lindedin - br.linkedin.com/pub/rodrigo-antonio-faccioli/7/589/a5/ Curriculum Lattes - http://lattes.cnpq.br/1025157978990218 On Wed, Aug 6, 2014 at 5:32 AM, Angeliki Chrysochou < angeliki.chrysoc...@gmail.com> wrote: > Hi Rodrigo, > > Glad that it is working for you now. I just wanted to mention that I never > had to set the language as properties to the source files since cmake > detects it from the suffix of the source files you list, or at least I > never had a case where the language was not properly detected. > > Other than that I agree with Hendrik's suggestions as well! > > Cheers, > Angeliki > > > > > > > On Wed, Aug 6, 2014 at 5:54 AM, Hendrik Sattler <p...@hendrik-sattler.de> > wrote: > >> Hi, >> >> -lm does not belong to CMAKE_CXX_FLAGS as it is a linker option to link >> libm. >> Use >> target_link_libraries(protpred-Gromacs-NSGA2 m) >> instead. (Don't search for libm, the linker knows where it is.) >> >> It is also more common to use a variable for the list of source files. >> That would make it also possible to set the compile language for all files >> in one command without listing files twice. >> >> Adding headers and not just .c/.cpp/.cxx files makes it easier when using >> an IDE. >> >> >> >> On 5. August 2014 22:13:54 MESZ, Rodrigo Faccioli < >> rodrigo.facci...@gmail.com> wrote: >> >Hi, >> > >> >I am thankfull for all help. Now, it is working :-) >> > >> >Radovan, thank you to try to run and your comments. >> > >> >My CMakeList.txt is showed below. I would like to know about best >> >practice >> >to make a CMakeList. If agree, I will compile others executables of my >> >project based on how I compiled this executable. In [1] contains my >> >full >> >project. >> > >> >cmake_minimum_required(VERSION 2.8) >> > >> ># project Information >> >project(2pg_cartesian) >> >set(PROJECT_VERSION "1.0") >> > >> ># Set compiler flags >> >SET ( CMAKE_CXX_FLAGS "-lm -pedantic") >> > >> >#Set CXX compiler for all files below >> >set_source_files_properties(include/LoadConfig.h PROPERTIES LANGUAGE >> >CXX ) >> >set_source_files_properties(src/protpred-Gromacs-NSGA2.c PROPERTIES >> >LANGUAGE CXX ) >> >set_source_files_properties(src/LoadConfig.cpp PROPERTIES LANGUAGE CXX >> >) >> >set_source_files_properties(src/ea_mono.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/topology.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/pdbio.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/protein.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/futil.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/pdbatom.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/messages.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/topologyio.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/topologylib.c PROPERTIES LANGUAGE CXX >> >) >> >set_source_files_properties(src/randomlib.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/vector_math.c PROPERTIES LANGUAGE CXX >> >) >> >set_source_files_properties(src/string_owner.c PROPERTIES LANGUAGE CXX >> >) >> >set_source_files_properties(src/math_owner.c PROPERTIES LANGUAGE CXX >> >) >> >set_source_files_properties(src/osutil.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/load_parameters.c PROPERTIES LANGUAGE >> >CXX ) >> >set_source_files_properties(src/objective.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/aminoacids.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/aminoacids_io.c PROPERTIES LANGUAGE >> >CXX ) >> >set_source_files_properties(src/populationio.c PROPERTIES LANGUAGE CXX >> >) >> >set_source_files_properties(src/rotation.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/solution.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/gromacs_objectives.c PROPERTIES >> >LANGUAGE >> >CXX ) >> >set_source_files_properties(src/solutionio.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/algorithms.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/ea_nsga2.c PROPERTIES LANGUAGE CXX ) >> >set_source_files_properties(src/dominance.c PROPERTIES LANGUAGE CXX ) >> > >> ># set include >> >include_directories(include) >> > >> ># add libries >> >add_library(2PG-NSGA2_lib STATIC >> >src/LoadConfig.cpp >> >src/ea_mono.c >> >src/topology.c >> >src/pdbio.c >> >src/protein.c >> >src/futil.c >> >src/pdbatom.c >> >src/messages.c >> >src/topologyio.c >> >src/topologylib.c >> >src/randomlib.c >> >src/vector_math.c >> >src/string_owner.c >> >src/math_owner.c >> >src/osutil.c >> >src/load_parameters.c >> >src/objective.c >> >src/aminoacids.c >> >src/aminoacids_io.c >> >src/populationio.c >> >src/rotation.c >> >src/solution.c >> >src/gromacs_objectives.c >> >src/solutionio.c >> >src/algorithms.c >> >src/ea_nsga2.c >> >src/dominance.c >> >) #end of 2PG-NSGA2_lib >> > >> ># add target >> >add_executable(protpred-Gromacs-NSGA2 src/protpred-Gromacs-NSGA2.c) >> >target_link_libraries(protpred-Gromacs-NSGA2 2PG-NSGA2_lib) >> > >> ># install >> >install(TARGETS protpred-Gromacs-NSGA2 DESTINATION bin) >> > >> >[1] https://dl.dropboxusercontent.com/u/4270818/2pg_cartesian_cmake.zip >> > >> >Best regards, >> > >> >-- >> >Rodrigo Antonio Faccioli, Ph.D >> >Development Software for Structural Bioinformatics >> >Barao de Maua University >> >University of Sao Paulo >> >Lindedin - br.linkedin.com/pub/rodrigo-antonio-faccioli/7/589/a5/ >> >Curriculum Lattes - http://lattes.cnpq.br/1025157978990218 >> > >> > >> >On Tue, Aug 5, 2014 at 3:39 PM, radovan bast <b...@kth.se> wrote: >> > >> >> dear Rodrigo, >> >> >> >> i tried it but ran into many other problems in the source, not cmake. >> >> >> >> but also some cmake suggestions: >> >> - list the language(s) that the project uses >> >> - the c99 flag is not a definition but a compiler flag, use >> >> CMAKE_CXX_FLAGS_... for portability >> >> - "ALL" is not a good library name >> >> - i recommend to not glob sources but to list them explicitly, there >> >are >> >> several discussions on the net >> >> which explain why if you search for the topic >> >> >> >> good luck! >> >> radovan >> >> >> >> >> >> On Tue, Aug 5, 2014 at 5:08 PM, Rodrigo Faccioli < >> >> rodrigo.facci...@gmail.com> wrote: >> >> >> >>> Hi, >> >>> >> >>> Thanks Angeliki and Bill for your attentation. >> >>> >> >>> I have updated my CMakeList.txt based on your post. Below my >> >>> CMakeList.txt is showed. >> >>> >> >>> cmake_minimum_required(VERSION 2.8) >> >>> # project Information >> >>> project(2pg_cartesian) >> >>> set(PROJECT_VERSION "1.0") >> >>> # add definitions to compiler >> >>> add_definitions(-std=c99) >> >>> # get all files under directory src >> >>> file(GLOB SRC_FILES "src/*.c") >> >>> # set include >> >>> include_directories(include) >> >>> # added libries >> >>> add_library(ALL STATIC ${SRC_FILES}) >> >>> # add target >> >>> add_executable(protpred-Gromacs-NSGA2 src/protpred-Gromacs-NSGA2.c) >> >>> target_link_libraries(protpred-Gromacs-NSGA2 ALL) >> >>> >> >>> Unfortunatelly, I have received error messages as cited below: >> >>> faccioli@faccioli:~/Downloads/2pg_cartesian/build$ make >> >>> Scanning dependencies of target ALL >> >>> [ 2%] Building C object >> >CMakeFiles/ALL.dir/src/protpred-Gromacs-NSGA2.c.o >> >>> [ 5%] Building C object CMakeFiles/ALL.dir/src/ea_mono.c.o >> >>> [ 7%] Building C object CMakeFiles/ALL.dir/src/topologyio.c.o >> >>> [ 10%] Building C object CMakeFiles/ALL.dir/src/aminoacids.c.o >> >>> [ 12%] Building C object CMakeFiles/ALL.dir/src/populationio.c.o >> >>> [ 15%] Building C object CMakeFiles/ALL.dir/src/osutil.c.o >> >>> [ 17%] Building C object CMakeFiles/ALL.dir/src/aminoacids_io.c.o >> >>> [ 20%] Building C object >> >>> >> >> >CMakeFiles/ALL.dir/src/protpred-Gromacs-Sort_Method_Files_by_Front_Dominance.c.o >> >>> [ 23%] Building C object CMakeFiles/ALL.dir/src/pdbio.c.o >> >>> [ 25%] Building C object CMakeFiles/ALL.dir/src/solution.c.o >> >>> [ 28%] Building C object CMakeFiles/ALL.dir/src/vector_math.c.o >> >>> [ 30%] Building C object CMakeFiles/ALL.dir/src/math_owner.c.o >> >>> [ 33%] Building C object CMakeFiles/ALL.dir/src/protein.c.o >> >>> [ 35%] Building C object CMakeFiles/ALL.dir/src/load_parameters.c.o >> >>> In file included from >> >>> /home/faccioli/Downloads/2pg_cartesian/src/load_parameters.c:7:0: >> >>> /home/faccioli/Downloads/2pg_cartesian/include/LoadConfig.h:1:18: >> >fatal >> >>> error: string: Arquivo ou diretório não encontrado >> >>> compilation terminated. >> >>> make[2]: ** [CMakeFiles/ALL.dir/src/load_parameters.c.o] Erro 1 >> >>> make[1]: ** [CMakeFiles/ALL.dir/all] Erro 2 >> >>> make: ** [all] Erro 2 >> >>> faccioli@faccioli:~/Downloads/2pg_cartesian/build$ >> >>> >> >>> I did not understand what mistakes I have done since all files share >> >same >> >>> structure of directory. In [1] is my project completly. If prefer I >> >can >> >>> send its github repository. >> >>> >> >>> I appreciate any help. >> >>> >> >>> Best regards, >> >>> >> >>> [1] >> >https://dl.dropboxusercontent.com/u/4270818/2pg_cartesian_cmake.zip >> >>> >> >>> >> >>> -- >> >>> Rodrigo Antonio Faccioli, Ph.D >> >>> Development Software for Structural Bioinformatics >> >>> Barao de Maua University >> >>> University of Sao Paulo >> >>> Lindedin - br.linkedin.com/pub/rodrigo-antonio-faccioli/7/589/a5/ >> >>> Curriculum Lattes - http://lattes.cnpq.br/1025157978990218 >> >>> >> >>> >> >>> On Mon, Aug 4, 2014 at 12:54 PM, Bill Hoffman >> ><bill.hoff...@kitware.com> >> >>> wrote: >> >>> >> >>>> On 8/4/2014 10:26 AM, Rodrigo Faccioli wrote: >> >>>> >> >>>>> protpred-Gromacs-NSGA2.c:(.text+0x1e): undefined reference to >> >>>>> `display_msg' >> >>>>> protpred-Gromacs-NSGA2.c:(.text+0x3e): undefined reference to >> >>>>> `load_parameters_from_file' >> >>>>> protpred-Gromacs-NSGA2.c:(.text+0x58): undefined reference to >> >>>>> `ea_nsga2' >> >>>>> protpred-Gromacs-NSGA2.c:(.text+0x64): undefined reference to >> >>>>> `fatal_error' >> >>>>> protpred-Gromacs-NSGA2.c:(.text+0x73): undefined reference to >> >>>>> `deAllocateload_parameters' >> >>>>> protpred-Gromacs-NSGA2.c:(.text+0x7d): undefined reference to >> >>>>> `display_msg' >> >>>>> >> >>>> You have to find out where these symbols are defined. If you have >> >a >> >>>> working Makefile version use nm and grep to find the places. You >> >can also >> >>>> grep your source tree. You are either missing a source file, or a >> >-D >> >>>> option. >> >>>> >> >>>> Another approach is to run make VERBOSE=1 and compare the build >> >command >> >>>> lines to your Makefile build. >> >>>> >> >>>> -Bill >> >>>> >> >>>> -- >> >>>> >> >>>> Powered by www.kitware.com >> >>>> >> >>>> Please keep messages on-topic and check the CMake FAQ at: >> >>>> http://www.cmake.org/Wiki/CMake_FAQ >> >>>> >> >>>> Kitware offers various services to support the CMake community. For >> >more >> >>>> information on each offering, please visit: >> >>>> >> >>>> CMake Support: http://cmake.org/cmake/help/support.html >> >>>> CMake Consulting: http://cmake.org/cmake/help/consulting.html >> >>>> CMake Training Courses: http://cmake.org/cmake/help/training.html >> >>>> >> >>>> Visit other Kitware open-source projects at http://www.kitware.com/ >> >>>> opensource/opensource.html >> >>>> >> >>>> Follow this link to subscribe/unsubscribe: >> >>>> http://public.kitware.com/mailman/listinfo/cmake >> >>>> >> >>> >> >>> >> >>> -- >> >>> >> >>> Powered by www.kitware.com >> >>> >> >>> Please keep messages on-topic and check the CMake FAQ at: >> >>> http://www.cmake.org/Wiki/CMake_FAQ >> >>> >> >>> Kitware offers various services to support the CMake community. For >> >more >> >>> information on each offering, please visit: >> >>> >> >>> CMake Support: http://cmake.org/cmake/help/support.html >> >>> CMake Consulting: http://cmake.org/cmake/help/consulting.html >> >>> CMake Training Courses: http://cmake.org/cmake/help/training.html >> >>> >> >>> Visit other Kitware open-source projects at >> >>> http://www.kitware.com/opensource/opensource.html >> >>> >> >>> Follow this link to subscribe/unsubscribe: >> >>> http://public.kitware.com/mailman/listinfo/cmake >> >>> >> >> >> >> >> >> >> >> -- >> >> # PDC Center for High Performance Computing & >> >> # Department of Theoretical Chemistry and Biology >> >> # Royal Institute of Technology, Stockholm >> >> # +46-8-790-6628 >> >> >> > >> > >> >------------------------------------------------------------------------ >> >> >> -- >> >> Powered by www.kitware.com >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Kitware offers various services to support the CMake community. For more >> information on each offering, please visit: >> >> CMake Support: http://cmake.org/cmake/help/support.html >> CMake Consulting: http://cmake.org/cmake/help/consulting.html >> CMake Training Courses: http://cmake.org/cmake/help/training.html >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Follow this link to subscribe/unsubscribe: >> http://public.kitware.com/mailman/listinfo/cmake >> > >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake