[CMake] adding a link directory

Liam Kurmos quantum.leaf at gmail.com
Sun May 8 12:59:47 EDT 2011


> I made a separate exe to test this and it linked with
> TARGET_LINK_LIBRARIES so this problem is not a cmake one. Something
> must me different in the too code contexts... if checked the obvious
> includes etc but atleast i know this is not cmake that is not linking.
>

actually i withdraw this. an undefined reference can only mean it's
isnt linking properly... So now my questions is why would one
executable link fine and not another?

i have:

ADD_EXECUTABLE(main main.cpp Data.cpp Mesh.cpp)

FIND_LIBRARY(TOURTRE_LIBRARY tourtre .)
TARGET_LINK_LIBRARIES(main ${TOURTRE_LIBRARY})

but essentially the same code in a difference exec gives an undefined
reference?

ADD_EXECUTABLE(testOVAS testOVAS.cpp Analyser4D.cpp
abstractFeature.cpp  Feature.cpp ImplicitVolume4D.cpp
Analyser3D.cpp GeoPoint.cpp StepToParamConverter.cpp ...etc.. Data.cpp Mesh.cpp
)
TARGET_LINK_LIBRARIES(testOVAS vtkWidgets vtkRendering vtkHybrid vnl
${TOURTRE_LIBRARY})

the only difference in the code is the bit that uses the library:

ctContext * ctx = ct_init(
		data.totalSize, //numVertices
		&(totalOrder.front()), //totalOrder. Take the address of the front
of an stl vector, which is the same as a C array
		&value,
		&neighbors,
		&mesh //data for callbacks. The global functions less, value and
neighbors are just wrappers which call mesh->getNeighbors, etc
	);

in one case this is just in the main function of main.cpp whereas in
the other exec if is inside a class function.

from header:
ctContext * ct_init(
    size_t  numVertices,
    size_t  *totalOrder,
    double  (*value)( size_t v, void* ),
    size_t  (*neighbors)( size_t v, size_t* nbrs, void* ),
    void*  data
);


The 2 callbacks are just local functions in both cases.

is there something wrong with the coding approach? I thought this
could be a code error but then i thought i should get some incorrect
type compile error in that case...


Liam


More information about the CMake mailing list