좀 target_link_libraries 있습니다cmake의 target_link_libraries
X와 연결하는 EXE와 x의 의존성에 결과add_library(x x.cc)
target_link_libraries(x depX1 depX2 depX3)
add_executable(exe exe.cc)
target_link_libraries(exe x ${shared_lib1} ${shared_lib2})
: depx1, depx2 등 문제는 shared_libs는 x와 종속의 사이에 인터된다는 것입니다 x이고 g ++ 4.6에서는 허용되지 않습니다 (이전 버전에서 작동했습니다).
수정 방법은 무엇입니까? CMakeLists.txt 파일에 지정된 것처럼 컴파일 링의 끝 부분에 공유 라이브러리를 넣어야합니다. 그래서 나는 그것들을 삽입하고 싶지 않습니다. 나는 편집 라인의 끝에 그것들을 넣고 싶습니다. 또한 depx1, depx2 depx3 등 자신의 종속성을뿐만 아니라 내가 원하는 유일한 점은 컴파일 링 라인의 끝에 나타나는 공유 라이브러리입니다.
어떻게할까요? 감사
이것은 추한 해킹 사용함으로써 해결이 해결 될 수 --LATER EDIT2-- =>: SRC /에서 targetName/CMakeFiles/TargetName.dir/link.txt 링크가
add_custom_command(TARGET TargetName
PRE_LINK COMMAND ${PROJECT_SOURCE_DIR}/custom_script.sh
ARGS ${PROJECT_BINARY_DIR}/src/TargetName/CMakeFiles/TargetName.dir/link.txt)
이다
커맨드 라인 CMake가 생성하고 custom_script.sh는 파일을 구문 분석하고 컴파일 링 라인의 끝에 동적 링크 라이브러리를 정렬하는 스크립트입니다.
는 --LATER EDIT--
그래서 본인은 현재 CMake없이 옵션은 컴파일 줄의 끝에와 g ++ 4.6, 모든 나누기와 공유 라이브러리를 넣어 함께! 이것은 대단하다!
당신의 출력을 보여줄 수'VERBOSE가 = 1' 문제가 정확히 무엇을 볼 수 있도록? –
안녕하세요, 출력은 다음과 같습니다 :/usr/bin/C++ -g -O2 -Wall -pthread -static x -shared_lib1 -shared_lib2 depX2 depX3. shared_lib1과 shared_lib2가 컴파일 라인의 끝에 위치하기를 원합니다. – FlorinP
'add_library (x STATIC x.cc)'와 같은 정적 라이브러리가 필요하다면 어떻게할까요? 또한'target_link_libraries'에 두 번의 호출을 사용하십시오. 하나는 x가 있고 다른 하나는 공유 라이브러리입니다. –