On 06-07-17 15:59, Sean Wayland wrote: > 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.hergar...@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 > > Hi Sean,
I'm also a bit confused as you seem to set 'C_STANDARD 99' as a property for the target, as well as 'set(CMAKE_CXX_STANDARD 14)'. I don't know if these two settings interfere with each other. Could you remove one of the two as an experiment? Regards, Micha
signature.asc
Description: OpenPGP digital signature
-- 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