This might be circular dependencies between your LibC and LibB libraries. I had such problem where it worked on Windows but not on Linux. If this is the case you can solve it by:
TARGET_LINK_LIBRARIES (A B C B) Or TARGET_LINK_LIBRARIES (A B C B C.) I solved it by defining a library that combines both libraries to one library and add the library file to the source files of every executable that links against them. IF(UNIX) # This is to overcome circular dependencies between ${BUILD_LANGUAGE} and Generic libs. # the benefit of doing it this way is that the combined library is only created once. SET (COMBINED_LIB ${CMAKE_BINARY_DIR}/lib${BUILD_LANGUAGE}Generic.a) ADD_CUSTOM_COMMAND(OUTPUT ${COMBINED_LIB} COMMAND ar ARGS crsv ${COMBINED_LIB} `find ./${BUILD_LANGUAGE} -name '*.o'` `find ./Generic -name '*.o'` DEPENDS ${BUILD_LANGUAGE} ${GENERIC_LIBRARIES} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Creating a single library from ${BUILD_LANGUAGE} & Generic" ) # adding the library to SOURCE_FILES creates a dependency of the project on the library. SET (SOURCE_FILES ${SOURCE_FILES} ${COMBINED_LIB}) ENDIF(UNIX) It is not so elegant, but it works. >I'm working with 3 CMakeLists.txt files I didn't write, so I'm trying to figure out the reasoning behind them. > >-Application A has a CMakeLists.txt file with TARGET_LINK_LIBARIES(LibB, LibC). -LibB and LibC each have their own subfolders and CMakeLists.txt >file, and use ADD_LIBRARY to declare their sources to be a library. -LibB uses some classes defined in LibC. > >Under windows, I can run cmake, compile and link without errors. On Linux, I get linker errors that LibB's uses of LibC are undefined >references. I tried adding TARGET_LINK_LIBRARY(LibC) to LibB's CMakeLists.txt file, but that didn't fix the error. Any ideas?
_______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake