2012-06-19 5 views

답변

1

내게 "오용"처럼 보입니다. 그것들은 모두 변수 TestProject_additional_libs에 할당됩니다. 마법은 아마도 나중에 target_link_libraries과 같이 확장 될 때 발생합니다. 나는 그런 것을 할 수 있다는 것을 몰랐다. 그러나 실제로 이런 방식으로 쓰여졌을 때 실제로 어떤 일이 일어나고 있는지는 명확하지 않습니다.

상기 링크에서 수동 인용 : "최적화"또는 "일반"키워드는 라이브러리가 바로이 해당 빌드 구성에만 사용되는 다음을 나타냅니다

A "디버그" .

+0

mlt는 다음과 같습니다. 대부분 라이브러리에는 두 가지 버전이 있으며 target_link_libraries가 호출되면 CMAKE_BUILD_TYPE을 사용하여 연결할 대상을 찾습니다. – Doug

+0

@mlt 오용이 아니므로,'target_link_libraries'가 어떻게 작동하도록 설계되어 있습니다. – Fraser

+0

@Doug'CMAKE_BUILD_TYPE'은 make 기반 제너레이터에서만 지원되므로 "빌드 구성"에 관한 설명서의 @mlt 따옴표는 기술적으로 더 정확합니다. – Fraser

1

변수 TestProject_additional_libs의 값을 optimized;foobar.lib;debug;foobard.lib을 포함하는 세미콜론으로 구분 된 목록으로 설정합니다.

일반적으로 ${TestProject_additional_libs} 다음 foobar.lib 최적화에 사용 (릴리스 등) 구축 및 foobard.lib 디버그에 사용되어야되어야 함을 나타 내기 위해 target_link_libraries 명령에 사용되는 빌드 :

target_link_libraries(<target> <files> ${TestProject_additional_libs}) 

임시을 만드는 방지하려면 변수 인 경우 target_link_libraries 호출 자체에서 유사한 구문을 사용할 수도 있습니다.

target_link_libraries(<target> <files> optimized foobar.lib debug foobard.lib) 
관련 문제