<div>Looks to me like COREAUDIO and friends are set incorrectly. COREAUDIO should be &quot;-framework;Coreaudio&quot; in order to use it as a framework with target_link_libraries... (not the full path to the framework library itself...)<br>
</div>
<div><br> </div>
<div class="gmail_quote">On Thu, Apr 16, 2009 at 10:22 AM, John Dey <span dir="ltr">&lt;<a href="mailto:jsdey@optonline.net">jsdey@optonline.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi List,<br><br>I am getting undefined symbols while linking up a program that I can create by hand (details shown below).  I think I have set cmake to duplicate but it can&#39;t find symbols.  Any help would be greatly appreciated.  Thanks.<br>
<br>John<br><br>Hand compile and link:<br><br><br>g++ -O3 -Wall -g -D__GXX__  -D__LITTLE_ENDIAN__  -D__MACOSX_CORE__ -c Stk.cpp -o Release/Stk.o<br>g++ -O3 -Wall -g -D__GXX__  -D__LITTLE_ENDIAN__  -D__MACOSX_CORE__ -c MidiFileIn.cpp -o Release/MidiFileIn.o<br>
g++ -O3 -Wall -g -D__GXX__  -D__LITTLE_ENDIAN__  -D__MACOSX_CORE__ -c RtMidi.cpp -o Release/RtMidi.o<br>g++ -O3 -Wall -g -D__GXX__  -D__LITTLE_ENDIAN__  -D__MACOSX_CORE__ -o playsmf playsmf.cpp Release/Stk.o Release/MidiFileIn.o Release/RtMidi.o -lpthread -lm  -framework CoreAudio -framework CoreFoundation -framework CoreMidi<br>
<br>CMakeLists.txt:<br><br>project (playsmf)<br>cmake_minimum_required(VERSION 2.6)<br>add_definitions(-D__LITTLE_ENDIAN__ -D__MACOS_CORE__ -D__GXX__ -g -Wall -03)<br>include_directories(&quot;${PROJECT_SOURCE_DIR}&quot;)<br>
add_executable(playsmf playsmf.cpp MidiFileIn.cpp RtMidi.cpp Stk.cpp)<br>find_library(COREAUDIO CoreAudio &quot;/usr&quot;)<br>find_library(COREFOUNDATION CoreFoundation &quot;/&quot;)<br>find_library(COREMIDI CoreMidi &quot;/&quot;)<br>
find_library(PTHREAD pthread &quot;/&quot;)<br>find_library(M m &quot;/&quot;)<br>target_link_libraries(playsmf ${COREAUDIO} ${COREFOUNDATION}<br>                    ${COREMIDI} ${PTHREAD} ${M}<br>)<br><br>Error messages:<br>
<br>Linking CXX executable playsmf<br>Undefined symbols:<br> &quot;RtMidiOut::initialize()&quot;, referenced from:<br>     RtMidiOut::RtMidiOut()in RtMidi.cpp.o<br> &quot;RtMidiOut::sendMessage(std::vector&lt;unsigned char, std::allocator&lt;unsigned char&gt; &gt;*)&quot;, referenced from:<br>
     _main in playsmf.cpp.o<br>     _main in playsmf.cpp.o<br> &quot;vtable for RtMidiOut&quot;, referenced from:<br>     __ZTV9RtMidiOut$non_lazy_ptr in RtMidi.cpp.o<br> &quot;vtable for RtMidiIn&quot;, referenced from:<br>
     __ZTV8RtMidiIn$non_lazy_ptr in RtMidi.cpp.o<br> &quot;RtMidiIn::initialize()&quot;, referenced from:<br>     RtMidiIn::RtMidiIn()in RtMidi.cpp.o<br>ld: symbol(s) not found<br>collect2: ld returned 1 exit status<br>make[2]: *** [playsmf] Error 1<br>
make[1]: *** [CMakeFiles/playsmf.dir/all] Error 2<br>make: *** [all] Error 2<br><br>Cache:<br><br>########################<br># EXTERNAL cache entries<br>########################<br><br>//Path to a program.<br>CMAKE_AR:FILEPATH=/usr/bin/ar<br>
<br>//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or<br>// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.<br>CMAKE_BUILD_TYPE:STRING=<br><br>//Enable/Disable color output during build.<br>CMAKE_COLOR_MAKEFILE:BOOL=ON<br>
<br>//CXX compiler.<br>CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++<br><br>//Flags used by the compiler during all build types.<br>CMAKE_CXX_FLAGS:STRING=<br><br>//Flags used by the compiler during debug builds.<br>CMAKE_CXX_FLAGS_DEBUG:STRING=-g<br>
<br>//Flags used by the compiler during release minsize builds.<br>CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG<br><br>//Flags used by the compiler during release builds (/MD /Ob1 /Oi<br>// /Ot /Oy /Gs will produce slightly less optimized but smaller<br>
// files).<br>CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG<br><br>//Flags used by the compiler during Release with Debug Info builds.<br>CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g<br><br>//C compiler.<br>CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc<br>
<br>//Flags used by the compiler during all build types.<br>CMAKE_C_FLAGS:STRING=<br><br>//Flags used by the compiler during debug builds.<br>CMAKE_C_FLAGS_DEBUG:STRING=-g<br><br>//Flags used by the compiler during release minsize builds.<br>
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG<br><br>//Flags used by the compiler during release builds (/MD /Ob1 /Oi<br>// /Ot /Oy /Gs will produce slightly less optimized but smaller<br>// files).<br>CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG<br>
<br>//Flags used by the compiler during Release with Debug Info builds.<br>CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g<br><br>//Flags used by the linker.<br>CMAKE_EXE_LINKER_FLAGS:STRING=<br><br>//Flags used by the linker during debug builds.<br>
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=<br><br>//Flags used by the linker during release minsize builds.<br>CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=<br><br>//Flags used by the linker during release builds.<br>CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=<br>
<br>//Flags used by the linker during Release with Debug Info builds.<br>CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=<br><br>//Path to a program.<br>CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool<br><br>//Install path prefix, prepended onto install directories.<br>
CMAKE_INSTALL_PREFIX:PATH=/usr/local<br><br>//Path to a program.<br>CMAKE_LINKER:FILEPATH=/usr/bin/ld<br><br>//Path to a program.<br>CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make<br><br>//Flags used by the linker during the creation of modules.<br>
CMAKE_MODULE_LINKER_FLAGS:STRING=<br><br>//Flags used by the linker during debug builds.<br>CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=<br><br>//Flags used by the linker during release minsize builds.<br>CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=<br>
<br>//Flags used by the linker during release builds.<br>CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=<br><br>//Flags used by the linker during Release with Debug Info builds.<br>CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=<br>
<br>//Path to a program.<br>CMAKE_NM:FILEPATH=/usr/bin/nm<br><br>//Path to a program.<br>CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND<br><br>//Path to a program.<br>CMAKE_OBJDUMP:FILEPATH=CMAKE_OBJDUMP-NOTFOUND<br><br>//Build architectures for OSX<br>
CMAKE_OSX_ARCHITECTURES:STRING=i386<br><br>//isysroot used for universal binary support<br>CMAKE_OSX_SYSROOT:PATH=/Developer/SDKs/MacOSX10.5.sdk<br><br>//Path to a program.<br>CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib<br><br>
//Flags used by the linker during the creation of dll&#39;s.<br>CMAKE_SHARED_LINKER_FLAGS:STRING=<br><br>//Flags used by the linker during debug builds.<br>CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=<br><br>//Flags used by the linker during release minsize builds.<br>
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=<br><br>//Flags used by the linker during release builds.<br>CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=<br><br>//Flags used by the linker during Release with Debug Info builds.<br>
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=<br><br>//If set, runtime paths are not added when using shared libraries.<br>CMAKE_SKIP_RPATH:BOOL=OFF<br><br>//Path to a program.<br>CMAKE_STRIP:FILEPATH=/usr/bin/strip<br>
<br>//If true, cmake will use relative paths in makefiles and projects.<br>CMAKE_USE_RELATIVE_PATHS:BOOL=OFF<br><br>//If this value is on, makefiles will be generated without the<br>// .SILENT directive, and all commands will be echoed to the console<br>
// during the make.  This is useful for debugging only. With Visual<br>// Studio IDE projects all commands are done without /nologo.<br>CMAKE_VERBOSE_MAKEFILE:BOOL=OFF<br><br>//Path to a library.<br>COREAUDIO:FILEPATH=/System/Library/Frameworks/CoreAudio.framework<br>
<br>//Path to a library.<br>COREFOUNDATION:FILEPATH=/System/Library/Frameworks/CoreFoundation.framework<br><br>//Path to a library.<br>COREMIDI:FILEPATH=/System/Library/Frameworks/CoreMidi.framework<br><br>//Path to a library.<br>
M:FILEPATH=/usr/lib/libm.dylib<br><br>//Path to a library.<br>PTHREAD:FILEPATH=/usr/lib/libpthread.dylib<br><br>//Value Computed by CMake<br>playAeolus_BINARY_DIR:STATIC=/Users/robo3/Music/MyProj/Play/PlayAeolus/bin<br><br>
//Value Computed by CMake<br>playAeolus_SOURCE_DIR:STATIC=/Users/robo3/Music/MyProj/Play/PlayAeolus/src<br><br>//Value Computed by CMake<br>playsmf_BINARY_DIR:STATIC=/Users/robo3/Music/MyProj/Play/PlayAeolus/bin<br><br>//Value Computed by CMake<br>
playsmf_SOURCE_DIR:STATIC=/Users/robo3/Music/MyProj/Play/PlayAeolus/src<br><br><br>########################<br># INTERNAL cache entries<br>########################<br><br>//Advanced flag for variable: CMAKE_AR<br>CMAKE_AR-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_BUILD_TOOL<br>CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1<br>//What is the target build tool cmake is generating for.<br>CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/make<br>//This is the directory where this CMakeCahe.txt was created<br>
CMAKE_CACHEFILE_DIR:INTERNAL=/Users/robo3/Music/MyProj/Play/PlayAeolus/bin<br>//Major version of cmake used to create the current loaded cache<br>CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2<br>//Minor version of cmake used to create the current loaded cache<br>
CMAKE_CACHE_MINOR_VERSION:INTERNAL=6<br>//Major version of cmake used to create the current loaded cache<br>CMAKE_CACHE_RELEASE_VERSION:INTERNAL=patch 3<br>//Advanced flag for variable: CMAKE_COLOR_MAKEFILE<br>CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1<br>
//Path to CMake executable.<br>CMAKE_COMMAND:INTERNAL=/Applications/CMake 2.6-3.app/Contents/bin/cmake<br>//Path to cpack program executable.<br>CMAKE_CPACK_COMMAND:INTERNAL=/Applications/CMake 2.6-3.app/Contents/bin/cpack<br>
//Path to ctest program executable.<br>CMAKE_CTEST_COMMAND:INTERNAL=/Applications/CMake 2.6-3.app/Contents/bin/ctest<br>//Advanced flag for variable: CMAKE_CXX_COMPILER<br>CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1<br>CMAKE_CXX_COMPILER_WORKS:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_CXX_FLAGS<br>CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_CXX_FLAGS_DEBUG<br>CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_CXX_FLAGS_MINSIZEREL<br>
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_CXX_FLAGS_RELEASE<br>CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO<br>CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_C_COMPILER<br>CMAKE_C_COMPILER-ADVANCED:INTERNAL=1<br>CMAKE_C_COMPILER_WORKS:INTERNAL=1<br>//Advanced flag for variable: CMAKE_C_FLAGS<br>CMAKE_C_FLAGS-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_C_FLAGS_DEBUG<br>
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_C_FLAGS_MINSIZEREL<br>CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_C_FLAGS_RELEASE<br>CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_C_FLAGS_RELWITHDEBINFO<br>CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1<br>//Result of TRY_COMPILE<br>CMAKE_DETERMINE_CXX_ABI_COMPILED:INTERNAL=TRUE<br>//Result of TRY_COMPILE<br>CMAKE_DETERMINE_C_ABI_COMPILED:INTERNAL=TRUE<br>
//Path to cache edit program executable.<br>CMAKE_EDIT_COMMAND:INTERNAL=/Applications/CMake 2.6-3.app/Contents/bin/ccmake<br>//Executable file format<br>CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown<br>//Advanced flag for variable: CMAKE_EXE_LINKER_FLAGS<br>
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG<br>CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL<br>
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE<br>CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO<br>
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1<br>//Name of generator.<br>CMAKE_GENERATOR:INTERNAL=Unix Makefiles<br>//Start directory with the top level CMakeLists.txt file for this<br>// project<br>CMAKE_HOME_DIRECTORY:INTERNAL=/Users/robo3/Music/MyProj/Play/PlayAeolus/src<br>
//Advanced flag for variable: CMAKE_INSTALL_NAME_TOOL<br>CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_LINKER<br>CMAKE_LINKER-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_MAKE_PROGRAM<br>
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_MODULE_LINKER_FLAGS<br>CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG<br>CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL<br>CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE<br>CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO<br>CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_NM<br>CMAKE_NM-ADVANCED:INTERNAL=1<br>//number of local generators<br>
CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1<br>//Advanced flag for variable: CMAKE_OBJCOPY<br>CMAKE_OBJCOPY-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_OBJDUMP<br>CMAKE_OBJDUMP-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_RANLIB<br>
CMAKE_RANLIB-ADVANCED:INTERNAL=1<br>//Path to CMake installation.<br>CMAKE_ROOT:INTERNAL=/Applications/CMake 2.6-3.app/Contents/share/cmake-2.6<br>//Advanced flag for variable: CMAKE_SHARED_LINKER_FLAGS<br>CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG<br>CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL<br>CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE<br>CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO<br>CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_SKIP_RPATH<br>CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1<br>//Advanced flag for variable: CMAKE_STRIP<br>CMAKE_STRIP-ADVANCED:INTERNAL=1<br>//Suppress Warnings that are meant for the author of the CMakeLists.txt<br>
// files.<br>CMAKE_SUPPRESS_DEVELOPER_WARNINGS:INTERNAL=FALSE<br>//uname command<br>CMAKE_UNAME:INTERNAL=/usr/bin/uname<br>//Advanced flag for variable: CMAKE_USE_RELATIVE_PATHS<br>CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1<br>
//Advanced flag for variable: CMAKE_VERBOSE_MAKEFILE<br>CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1<br><br>_______________________________________________<br>Powered by <a href="http://www.kitware.com/" target="_blank">www.kitware.com</a><br>
<br>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br><br>Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br></blockquote></div><br>