[CMake] Help cmake First project

Rodrigo Faccioli rodrigo.faccioli at gmail.com
Tue Aug 5 16:13:54 EDT 2014


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 <bast at 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.faccioli at 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 at 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 at 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.hoffman at 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20140805/57187080/attachment.html>


More information about the CMake mailing list