[CMake] cmake create executable Undefined symbols for architecture x86_64:

Sean Wayland seanwayland at gmail.com
Thu Jul 6 09:59:16 EDT 2017


Hi Micha,
Thanks very much I tried that .. I added it to the application
directory cmakelists.txt file . Same issue .. It's already in the top
level cmake file which looks like this ..

project(CATSMAT)
cmake_minimum_required(VERSION 3.6.3)


if (APPLE)

    set(CMAKE_C++_FLAGS -mmacosx-version-min=10.4)
endif (APPLE)


include_directories("catsmat/libIMUSANT")

add_subdirectory (catsmat/googletest-master/googletest)
add_subdirectory (catsmat/libMusicXMLv3/libmusicxml-3.00-src/cmake)
add_subdirectory (catsmat/libIMUSANT/cmake)
add_subdirectory (catsmat/libIMUSANT_Tests/cmake)
add_subdirectory (catsmat/catsmat/cmake)

set(CMAKE_CXX_STANDARD 14)

On Thu, Jul 6, 2017 at 2:48 AM, Micha Hergarden
<micha.hergarden at gmail.com> wrote:
> On 05-07-17 22:50, Sean Wayland wrote:
>> I am attempting to write a cmakelists.txt file for an application.
>> The application has a couple of dependencies.
>> I have been able to build targets for the dependencies but when I try
>> and add an executable for the main application I encounter this error.
>>
>> Undefined symbols for architecture x86_64:
>>
>>   "_main", referenced from:
>>
>>      implicit entry/start for main executable
>>
>> ld: symbol(s) not found for architecture x86_64
>>
>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>
>>
>> Googling the error and looking on stack exchange suggests that I don't
>> have a main function in the implicit entry/start .
>>
>> Where does it look for this function ?
>> Does that file need to be first in the list of sources ?
>>
>>
>>
>> This function is included here :
>> ${CATSMAT_DIR}/Application/CATSMAT_main.cpp
>>
>> My cmake file is below.
>>
>> Any advice would be appreciated I have been stuck here for a while!
>>
>> Best Sean
>>
>>
>> #######################################
>> # CMAKE CATSTMAT
>> #######################################
>> cmake_minimum_required(VERSION 3.6.3)
>> set(CMAKE_CXX_STANDARD 14)
>> if(CMAKE_CONFIGURATION_TYPES)
>> set(CMAKE_CONFIGURATION_TYPES Debug Release)
>> endif()
>>
>> if(UNIX)
>> add_definitions(-Wall -DGCC)
>> endif(UNIX)
>>
>> ##### RPATH SETTING #####
>> set(CMAKE_MACOSX_RPATH 1)
>>
>> #if(APPLE)
>> # set (CMAKE_OSX_ARCHITECTURES "x86_64 i386")
>> # if (${CMAKE_SYSTEM_VERSION} VERSION_LESS 9.0.0)
>> # set (CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.4u.sdk)
>> # elseif (${CMAKE_SYSTEM_VERSION} VERSION_LESS 10.8.0)
>> # set (CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk)
>> # elseif (${XCODE_VERSION} VERSION_LESS 4.0.0)
>> # set (CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk)
>> # else ()
>> # set (CMAKE_OSX_SYSROOT "macosx10.7")
>> # endif ()
>> # set (CMAKE_C++_FLAGS -mmacosx-version-min=10.4)
>> #endif(APPLE)
>> #
>> #if(WIN32)
>> # add_definitions(-DWINVER=0x0400 -DWIN32)
>> # if(${CMAKE_GENERATOR} STREQUAL "Visual Studio 6")
>> #  add_definitions(-DVC6)
>> # elseif(${CMAKE_GENERATOR} STREQUAL "Visual Studio 8 2005")
>> #  add_definitions(-DVC2005)
>> # endif(${CMAKE_GENERATOR} STREQUAL "Visual Studio 6")
>> #endif(WIN32)
>>
>> ###############  BOOST LIBRARIES ###########
>> if (APPLE)
>> set(BOOST_ROOT "/usr/local/boost")
>> set(BOOST_FILESYSTEM_LIB  /usr/local/boost/lib/libboost_filesystem.dylib)
>> set(BOOST_SYSTEM_LIB      /usr/local/boost/lib/libboost_system.dylib)
>>
>> else (NOT APPLE)
>> set(BOOST_ROOT "C:/local/boost_1_58_0")
>> set(BOOST_FILESYSTEM_LIB  C:/local/boost_1_58_0/lib64-msvc-12.0)
>> set(BOOST_SYSTEM_LIB      C:/local/boost_1_58_0/lib64-msvc-12.0)
>> endif (APPLE)
>>
>> FIND_PACKAGE( Boost 1.58.0 REQUIRED  )
>> INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )
>>
>>
>> #######################################
>> # set directories, src and headers.
>>
>> set (CATSMAT_DIR    /Users/seanwayland/Desktop/CATSMAT-master/catsmat/catsmat )
>> set (libIMUSANT_DIR    ${CMAKE_CURRENT_SOURCE_DIR}/../../libIMUSANT)
>> set (LOKI_DIR               ${CMAKE_CURRENT_SOURCE_DIR}/../../Loki)
>> set (SUFFIX_TREE_DIR        ${CMAKE_CURRENT_SOURCE_DIR}/../../SuffixTree)
>> set (GOOGLE_TEST_INC_DIR
>> ${CMAKE_CURRENT_SOURCE_DIR}/../../googletest-master/googletest/include)
>> set (IMUSANT_DIR        ${CMAKE_CURRENT_SOURCE_DIR}/../../libIMUSANT)
>>
>>
>> set (LIBMUSICXML_DIR    ${CMAKE_CURRENT_SOURCE_DIR}/../../libMusicXMLv3)
>>
>>
>> #### SET SOURCES EXPLICITLY #####
>>
>> set(SRC
>>
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_contour_suffixtree_builder.cpp
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_generalised_interval_suffixtree_builder.cpp
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_interval_suffixtree_builder.cpp
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_pitch_suffixtree_builder.cpp
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_repeated_interval_substring.cpp
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_t_repeated_substring.cpp
>> ${CATSMAT_DIR}/Analysis/src/IMUSANT_VectorMapAnalysisTypes.cpp
>>
>> ${CATSMAT_DIR}/Application/CATSMAT_main.cpp
>> ${CATSMAT_DIR}/Application/CATSMAT_menu.cpp
>>
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_chord.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_collectionvisitor.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_cp_matrix.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_dyad_sequences.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_dyadtuple_sequences.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_sonority_sequences.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_TrigramSequences.cpp
>> ${CATSMAT_DIR}/CounterpointAnalysis/src/CATSMAT_TrigramSuffixTreeBuilder.cpp
>>
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_canonic_techniques_tools.cpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_partdata.cpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_processing.cpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_score_profile.tpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_score_splitter.cpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_score_profile_special.cpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_scoredata.cpp
>> ${CATSMAT_DIR}/GeneralAnalysis/src/CATSMAT_scoredatacollector.cpp
>>
>> ${CATSMAT_DIR}/Segmentation/IMUSANT_segment.cpp
>> ${CATSMAT_DIR}/Segmentation/IMUSANT_set_of_segment.cpp
>>
>> ${CATSMAT_DIR}/Segmentation/FixedPeriodDetection/src/IMUSANT_fixed_period_segmenter.cpp
>> ${CATSMAT_DIR}/Segmentation/FixedPeriodDetection/src/IMUSANT_partlist_ordered_by_part_entry.cpp
>> ${CATSMAT_DIR}/Segmentation/FixedPeriodDetection/src/IMUSANT_segmented_part_fixed_period.cpp
>> ${CATSMAT_DIR}/Segmentation/FixedPeriodDetection/src/SegmentedScoreFixedPeriod.cpp
>>
>> ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src/IMUSANT_interval_profile_LBDM.cpp
>> ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src/IMUSANT_LBDM_segmenter.cpp
>> ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src/IMUSANT_segmented_note_vectors.cpp
>> ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src/IMUSANT_segmented_part_LBDM.cpp
>> ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src/IMUSANT_segmented_profile_vectors.cpp
>> ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src/IMUSANT_weighted_strength_vectors.cpp
>>
>>
>>
>>
>> )
>>
>>
>>
>>
>> # old version of adding source code
>>
>> #set (SRCFOLDERS
>>
>>
>> #       ${CATSMAT_DIR}/Analysis/src
>> #       ${CATSMAT_DIR}/CounterpointAnalysis/src
>> #       ${CATSMAT_DIR}/GeneralAnalysis/src
>> #       ${CATSMAT_DIR}/Segmentation/FixedPeriodDetection/src
>> #       ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src
>> #       ${CATSMAT_DIR}/Application
>> #       ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/src
>> #       ${CATSMAT_DIR}/Segmentation
>> #       ${CATSMAT_DIR}/Utilities
>> #)
>>
>>
>> set (INCFOLDERS
>> ${libIMUSANT_DIR}
>> ${CATSMAT_DIR}/Analysis/inc
>>         ${CATSMAT_DIR}/Application
>>         ${CATSMAT_DIR}/CounterpointAnalysis/inc
>>         ${CATSMAT_DIR}/GeneralAnalysis/inc
>>         ${CATSMAT_DIR}/Segmentation
>>         ${CATSMAT_DIR}/Segmentation/FixedPeriodDetection/inc
>>         ${CATSMAT_DIR}/Segmentation/LocalBoundaryDetectionModel/inc
>>         ${CATSMAT_DIR}/Utilities
>>         ${libIMUSANT_DIR}/DomainObjects/inc
>> ${libIMUSANT_DIR}/Utilities/inc
>> ${libIMUSANT_DIR}/FileProcessing/inc
>> ${libIMUSANT_DIR}/Converters/MusicXML_v3
>> ${libIMUSANT_DIR}/Converters/MusicXML_v3/inc
>> ${libIMUSANT_DIR}/Converters/MusicXML_v3/shared/inc
>>         ${IMUSANT_DIR}/DomainObjects/inc
>> ${IMUSANT_DIR}/Converters/MusicXML_v3
>>         ${IMUSANT_DIR}/Converters/MusicXML_v3/inc
>> ${IMUSANT_DIR}/Converters/Shared/inc
>>         ${IMUSANT_DIR}/FileProcessing/inc
>>         ${IMUSANT_DIR}/FileProcessing/Analysis/Segmentation/FixedPeriodDetection/
>>         ${IMUSANT_DIR}/Utilities/inc
>>         ${SUFFIXTREE_DIR}
>> ${LIBMUSICXML_DIR}/libmusicxml-3.00-src/src
>> ${LIBMUSICXML_DIR}/libmusicxml-3.00-src/src/lib
>> ${LIBMUSICXML_DIR}/libmusicxml-3.00-src/src/visitors
>> ${LIBMUSICXML_DIR}/libmusicxml-3.00-src/src/parser
>>         ${LOKI_DIR}
>> ${SUFFIX_TREE_DIR}
>> ${GOOGLE_TEST_INC_DIR}
>> )
>>
>>
>> #foreach(folder ${SRCFOLDERS})
>> # set(SRC ${SRC} "${folder}/*.cpp") # add source files
>> #endforeach(folder)
>> #file (GLOB CORESRC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${SRC})
>>
>>
>>
>> ## is this necessary I think target link directories might do the job ?
>>
>> foreach(folder ${INCFOLDERS})
>> set(HEADERS ${HEADERS} "${folder}/*.h") # add header files
>> set(INCL ${INCL} "${folder}") # add include folders
>> endforeach(folder)
>>  file (GLOB COREH RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${HEADERS})
>>
>>
>> #######################################
>> # set includes ( is this needed ? )
>> include_directories( ${INCFOLDERS})
>> set_source_files_properties (${COREH} PROPERTIES HEADER_FILE_ONLY TRUE)
>>
>>
>> #######################################
>> # set library target
>>
>> #if(APPLE OR MSVC)
>>
>> set(target catsmat)
>>
>> # I don't know why these if statements are included they seem to do nothing '
>> #else(APPLE OR MSVC)
>> # set(target catsmat)
>> #endif(APPLE OR MSVC)
>>
>> ##if(MSVC)
>> ## enable_language(RC)
>> ## set(LIBCONTENT ${CORESRC} ${COREH}
>> ${CATSMAT_DIR}/win32/libIMUSANT/libIMUSANT.rc)
>> ##else(MSVC)
>> ## set(LIBCONTENT ${CORESRC} ${COREH})
>> ##endif(MSVC)
>>
>> add_executable(${target} ${SRC} )
>>
>> #### add include directories
>> include_directories ( ${INCFOLDERS} )
>>
>> ###############  Targeted Libraries ###########
>>
>> TARGET_LINK_LIBRARIES(${target} gtest)
>> TARGET_LINK_LIBRARIES(${target} ${BOOST_FILESYSTEM_LIB})
>> TARGET_LINK_LIBRARIES(${target} ${BOOST_SYSTEM_LIB})
>> TARGET_LINK_LIBRARIES(${target} libmusicxml2)
>> TARGET_LINK_LIBRARIES(${target} libIMUSANT)
>>
>>
>> set_target_properties (${target} PROPERTIES
>> FRAMEWORK TRUE
>> VERSION ${VERSION}
>>                         C_STANDARD 99
>> FRAMEWORK_VERSION ${VERSION}
>> PUBLIC_HEADER "${COREH}"
>> DEFINE_SYMBOL LIBMUSICXML_EXPORTS
>> MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${STRVERS}
>> MACOSX_FRAMEWORK_BUNDLE_VERSION ${SSTRVERS}
>> )
>>
>>
>>
>> #######################################
>> # install setup
>> if(NOT APPLE)
>> install ( TARGETS ${target} ${TOOLS}
>> RUNTIME DESTINATION bin
>>     LIBRARY DESTINATION lib
>>     ARCHIVE DESTINATION lib
>>     FRAMEWORK DESTINATION "/Library/Frameworks" CONFIGURATIONS Release
>>     PUBLIC_HEADER DESTINATION include/libmusicxml
>> )
>> endif(NOT APPLE)
>>
>>
>>
>>
>>
>>
> Hello Sean,
>
> Could you try adding a 'project(CATSTMAT)' call right at the top of your
> CMakeLists.txt? As well as setting a name for the project, this call
> also enables languages by default.
>
> HTH,
> Micha
>
>
>
> --
>
> 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



-- 
www.seanwayland.com

Sean Wayland

licensed real estate salesperson
phone: 3475231455


More information about the CMake mailing list